我正在使用keras进行多标签分类。我使用' binary_crossentropy '作为损失函数, metrics = ['accuracy'] ,' sigmoid ”作为激活。
在培训期间,我看到了90%以上的准确性,而且在测试集上使用 evaluate 我也有类似的感觉。 如果我尝试使用 predict 模块手动计算准确度,则训练集上的准确度也会大大降低45%。
这是模型:
model = keras.models.Sequential()
model.add(keras.layers.Conv2D(8, kernel_size=3, strides=2, activation='relu', input_shape=(N_qubits, N_qubits,2)))
model.add(keras.layers.Conv2D(16, kernel_size=2, activation='relu'))
model.add(keras.layers.Dense(64, activation='relu'))
model.add(keras.layers.Dense(128, activation='relu'))
model.add(keras.layers.Conv2D(32, kernel_size=1, activation='relu'))
model.add(keras.layers.GlobalMaxPooling2D())
model.add(keras.layers.Dense(units=y_train.shape[1], activation='sigmoid'))
adam_optimizer = keras.optimizers.adam()
model.compile(loss='binary_crossentropy', optimizer=adam_optimizer, metrics=['accuracy'])
history = model.fit(X_train, y_train, batch_size=150, epochs=1000, verbose=1, validation_split=0.05)
在这里使用评估()
results = model.evaluate(X_test, y_test, batch_size=128)
在这里,当我使用predict()
y_pred_train = model.predict(X_train)
y_pred_test = model.predict(X_test)