我正在使用 Keras 库训练这个非常简单的神经网络。
无论历元数如何,即使对于训练集中涵盖的案例,神经网络也无法正确预测。
我在这里做错了什么。
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras import optimizers
import numpy as np
model = Sequential()
model.add(Dense(3, input_dim=3))
model.add(Activation('sigmoid'))
model.add(Dense(3, activation='softmax'))
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(optimizer=sgd,
loss='categorical_crossentropy',
metrics=['accuracy'])
inputData=[[0,0,1],[0,1,0],[1,0,0]]
outputData=[[0,0,1],[0,1,0],[1,0,0]]
numpy_input=np.array(inputData).reshape(len(inputData),3)
numpy_output=np.array(outputData).reshape(len(inputData),3)
model.fit(numpy_input, numpy_output, nb_epoch=20, batch_size=3,verbose=1)
op=model.predict(np.array([0,0,1]).reshape(1,3))
print op
我得到的输出是 [[ 0.41825652 0.32675183 0.25499159]] 和许多其他变体。
最佳答案
试试这个
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras import optimizers
import numpy as np
model = Sequential()
model.add(Dense(3, input_dim=3))
model.add(Activation('sigmoid'))
model.add(Dense(3, activation='softmax'))
sgd = optimizers.SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(optimizer=sgd,
loss='categorical_crossentropy',
metrics=['accuracy'])
inputData=[[0,0,1],[0,1,0],[1,0,0]]
outputData=[[0,0,1],[0,1,0],[1,0,0]]
numpy_input=np.array(inputData)
numpy_output=np.array(outputData)
model.fit(numpy_input, numpy_output, nb_epoch=50, batch_size=3,verbose=1)
op=model.predict(np.array([[0,0,1]]))
print(op)
这在我的机器上产生
[[ 0.30640799 0.34553316 0.34805891]]
建议输出为 0 0 1
关于machine-learning - 基于 Keras 的神经网络未训练,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44721487/