我正在学习keras,我的任务很简单。使用来自数据的3个变量来预测另一个变量值,它可以在R / Python ANN模型上正常工作。但是,当我尝试使用keras构建神经网络时,它无法以0精度工作。 代码是,
from keras.models import Sequential
from keras.layers import Dense, Activation
import pandas as pd
from sklearn.cross_validation import train_test_split
data = pd.read_csv(datapath)
data = data.dropna()
x = data.values[:, [2, 9, 10]]
y = data.values[:, 8]
train_X, test_X, train_y, test_y = train_test_split(x, y, train_size=0.5, random_state=0)
model = Sequential()
model.add(Dense(16, input_shape=(3,)))
model.add(Activation('sigmoid'))
model.add(Dense(1))
model.add(Activation('linear'))
model.compile(optimizer='sgd', loss='mean_squared_error', metrics=['accuracy'])
model.fit(train_X, train_y, nb_epoch=100, batch_size=32, verbose=0)
loss, accuracy = model.evaluate(test_X, test_y, verbose=0)
print("Accuracy = {:.2f}".format(accuracy))
所以,我的问题是,我的代码是否正确以及如何使其正常工作?
答案 0 :(得分:0)
如果您尝试预测实数的值,您可能不会对专用于分类的准确性感兴趣。我建议用你正在使用的损失来衡量训练进度:均方误差。
如果您想监控培训进度,可以将关键字validation_data = [X_val,y_val]传递给fit方法。
否则,要测量测试集上的预测误差,只需使用scikit-learn函数http://scikit-learn.org/stable/modules/generated/sklearn.metrics.mean_squared_error.html
<强>更新强> 与其他软件包的一个区别可能是权重的初始化。使用密集图层的初始化参数或初始化比例可能会对您有所帮助。