python - 我如何获得与 keras 重合的百分比
问题描述
我有我的模型和我的偏见,当我预测我的图像时,我得到一个像这样的向量
[0 , 0 , 0 , 1]
我需要这样的东西
[.48, .52, .08, .97]
我的培训代码是:
entrenamiento_datagen = ImageDataGenerator(
rescale=1. / 255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale=1. / 255)
entrenamiento_generador = entrenamiento_datagen.flow_from_directory(
data_entrenamiento,
target_size=(altura, longitud),
batch_size=batch_size,
class_mode='categorical')
validacion_generador = test_datagen.flow_from_directory(
data_validacion,
target_size=(altura, longitud),
batch_size=batch_size,
class_mode='categorical')
cnn = Sequential()
cnn.add(Convolution2D(filtrosConv1, tamano_filtro1, padding ="same",input_shape=(longitud, altura, 3), activation='relu'))
cnn.add(MaxPooling2D(pool_size=tamano_pool))
cnn.add(Convolution2D(filtrosConv2, tamano_filtro2, padding ="same"))
cnn.add(MaxPooling2D(pool_size=tamano_pool))
cnn.add(Flatten())
cnn.add(Dense(256, activation='relu'))
cnn.add(Dropout(0.5))
cnn.add(Dense(clases, activation='sigmoid'))
cnn.compile(loss='categorical_crossentropy',
optimizer=optimizers.Adam(lr=lr),
metrics=['accuracy'])
我的分类代码是:
ongitud, altura = 150, 150
modelo = './modelo/modelo.h5'
pesos_modelo = './modelo/pesos.h5'
with CustomObjectScope({'GlorotUniform': glorot_uniform()}):
cnn = load_model(modelo)
cnn.load_weights(pesos_modelo)
def predict(file):
x = load_img(file, target_size=(longitud, altura))
x = img_to_array(x)
x = np.expand_dims(x, axis=0)
array = cnn.predict_proba(x[0:1])
print(array)
我试过 predict(), predict_proba() 但没有用
解决方案
您应该使用 binary_crossentropy 而不是 categorical_crossentropy:
categorical_crossentropy 用于多类问题,即为每个样本从众多类别中选择一个。它返回一个介于 0 和 1 之间的数字向量,总和为 1。
binary_crossentropy 用于多标签问题,即可能为每个样本分配多个标签。它返回一个数字向量,每个数字都在 0 和 1 之间。
推荐阅读
- angularjs - 无法从 Javascript 设置 Angular 模型
- blockchain - 如何限制某人在 1 个钱包中可以拥有的资产数量?
- apache-spark - 如果我们使用 newSession() 方法创建多个 Spark Session,多个 Spark 会话之间如何共享驱动程序内存
- python - 无法在 python3 和 ImportError 中导入 tensorflow:此包不应在 Python 3 上访问
- kotlin - 减少/收集`列表
- python - 比较两个字典的键并使用与另一个字典中的键不匹配的键、值对创建一个字典 - Python
- python - 我可以将我安装的第三方 Python 包发送给其他人吗?
- javascript - mongodb native updateMany和mongoose updateMany的区别
- scalafx - 如何在 scalafx gui 场景中添加 mp3?
- node.js - 当我使用 json 发布请求时出现意外令牌错误