0
私はマルチラベル分類器を訓練しようとしました。出力層にシグモイドユニットを使用して、 "binary_crossentrpy"のロスを使用しました。現在の問題は、トレーニングとテストの結果が理想的であり、損失と精度の値が大きかったことです。しかし、model.predict()予測ラベルを使用した場合、出力は実際のラベル値と一致しません。どのようにそれを解決するコードを変更するには? トレーニングセットとテストセットの形状は(-1,1,300,300)、ターゲットラベルの形状は(-1、478)、合計478個です。 完全コード:マルチラベル分類用のケラスについて
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Activation, Convolution2D, MaxPooling2D, Flatten, Dropout
from keras.optimizers import Adam
X = np.load('./data/X_train.npy')
y = np.load('./data/Y_train.npy')
X_train, y_train = X[:2000], y[:2000]
X_test, y_test = X[2000:], y[2000:]
model = Sequential()
model.add(Convolution2D(nb_filter=32, nb_row=5, nb_col=5, padding='same', input_shape=(1, 300, 300)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2), padding='same'))
model.add(Dropout(0.25))
model.add(Convolution2D(64, 5, 5, padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2), border_mode='same'))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(1024))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(478))
model.add(Activation('sigmoid'))
model.compile(optimizer=Adam(lr=1e-4), loss='binary_crossentropy', metrics=['accuracy'])
print('Training ------------')
model.fit(X_train, y_train, epochs=5, batch_size=300, validation_data=(X_test, y_test), verbose=1)
model.save('model.h5')
解決策を見つける手助けをしてもらえますか?ありがとう!
これを今解決しますか? – Huo