我正在尝试运行一个神经网络,在 python 中使用 keras,它有 2 个输入值和 3 个输出值。输入表示自然频率,而输出表示等效冰载荷。问题是在模型完成训练后,它似乎只被训练用于预测一个输入,而不是所有三个输入。该模型是回归而不是分类。在这里我展示我的代码
seed = 9
np.random.seed(seed)
# import dataset
dataset=np.loadtxt("Final_test_matrix_new_3_digits.csv", delimiter=",")
# Define dataset
Y=dataset[:, 0:3]
X=dataset[:, 3:5]
#Categorize data
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.3,
random_state = seed)
# create model
model = Sequential()
model.add(Dense(12, input_dim=2,activation='relu'))
model.add(Dense(8, init='uniform', activation='relu'))
model.add(Dense(8, init='uniform', activation='relu'))
model.add(Dense(3, init='uniform', activation='relu'))
# compile the model
model.compile(loss='mean_squared_logarithmic_error', optimizer='adam',
metrics=['accuracy'])
# checkpoint
filepath="weights.best_12_8_8_neurons.hdf5"
checkpoint = ModelCheckpoint(filepath, monitor='val_acc', verbose=1,
save_best_only=True, mode='max')
callbacks_list = [checkpoint]
# fit the model
history=model.fit(X_train, Y_train, validation_split=0.1, epochs=100000,
batch_size=10,callbacks=callbacks_list)
# evaluate the model
scores = model.evaluate(X_test, Y_test)
print ("Accuracy: %.2f%%" %(scores[1]*100))
根据python,该模型的准确度为65%,但这一事实并没有影响输出的准确度,因为第二个输出的准确度低于第一个,而第三个输出的准确度几乎为0。代码的主要目标是创建一个回归模型,其中所有输出都具有相同的精度。下面分别显示了模型精度、模型损失和每个输出的预测:
森栏
相关分类