1
我正在學習使用Keras設計卷積神經網絡。我開發了一個使用VGG16作爲基礎的簡單模型。我在數據集中有大約6類圖像。這裏是我的模型的代碼和描述。在Keras的多分類中有多個預測?
model = models.Sequential()
conv_base = VGG16(weights='imagenet' ,include_top=False, input_shape=(IMAGE_SIZE, IMAGE_SIZE, 3))
conv_base.trainable = False
model.add(conv_base)
model.add(layers.Flatten())
model.add(layers.Dense(256, activation='relu', kernel_regularizer=regularizers.l2(0.001)))
model.add(layers.Dropout(0.5))
model.add(layers.Dense(6, activation='sigmoid'))
下面是用於編譯和擬合模型的代碼:
model.compile(loss='categorical_crossentropy',
optimizer=optimizers.RMSprop(lr=1e-4),
metrics=['acc'])
model.summary()
callbacks = [
EarlyStopping(monitor='acc', patience=1, mode='auto'),
ModelCheckpoint(monitor='val_loss', save_best_only=True, filepath=model_file_path)
]
history = model.fit_generator(
train_generator,
steps_per_epoch=10,
epochs=EPOCHS,
validation_data=validation_generator,
callbacks = callbacks,
validation_steps=10)
這裏是一個新的圖像
img = image.load_img(img_path, target_size=(IMAGE_SIZE, IMAGE_SIZE))
plt.figure(index)
imgplot = plt.imshow(img)
x = image.img_to_array(img)
x = x.reshape((1,) + x.shape)
prediction = model.predict(x)[0]
# print(prediction)
通常模型的預測的代碼。 predict()方法預測多個類。
[0 1 1 0 0 0]
我有幾個問題
- 這是正常的多類分類模型來預測一個以上的輸出?
- 如果預測不止一個班級,在培訓時間內如何測量準確度?
- 如何修改神經網絡,以便只預測一個類?
任何幫助表示讚賞。非常感謝!
謝謝你的解釋。就是這樣!你能解釋一下Keras火車功能如何測量準確性嗎?例如,在訓練期間,假設模型預測[0,0.2,0.4,0.7,0.1,0]。凱拉斯是否會看第3課,準確度爲0.7,並認爲該模型的輸出與真相相比較? – TMS
這種方法不是庫特定的。一般多類分類概率是使用n個輸出類的softmax激活,將「pick」作爲最高概率之一。所以對你而言,是的,第3課被認爲是選定的課程。單個樣本的準確度是二進制的,並根據您的輸入進行平均。 @TMS。 – modesitt