【发布时间】:2018-04-12 17:13:17
【问题描述】:
我用 keras 创建了一个用于预测加法的神经网络。 我有 2 个输入和 1 个输出(添加 2 个输入的结果)。
我用 tensorflow 训练了我的神经网络,然后我尝试预测加法,但程序返回 0 或 1 值而不是 3,4,5,etc。
这是我的代码:
from keras.models import Sequential
from keras.layers import Dense
import numpy
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# load dataset
dataset = numpy.loadtxt("data.csv", delimiter=",")
# split into input (X) and output (Y) variables
X = dataset[:,0:2]
Y = dataset[:,2]
# create model
model = Sequential()
model.add(Dense(12, input_dim=2, init='uniform', activation='relu'))
model.add(Dense(2, init='uniform', activation='relu'))
model.add(Dense(1, init='uniform', activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X, Y, epochs=150, batch_size=10, verbose=2)
# calculate predictions
predictions = model.predict(X)
# round predictions
rounded = [round(x[0]) for x in predictions]
print(rounded)
还有我的文件data.csv:
1,2,3
3,3,6
4,5,9
10,8,18
1,3,4
5,3,8
例如:
1+2=3
3+3=6
4+5=9
...etc.
但我得到这个输出:0,1,0,0,1,0,1...
为什么我没有得到3,6,9... 的输出?
我更新了使用其他损失函数的代码,但我有同样的错误:
from keras.models import Sequential
from keras.layers import Dense
import numpy
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# load pima indians dataset
dataset = numpy.loadtxt("data.csv", delimiter=",")
# split into input (X) and output (Y) variables
X = dataset[:,0:2]
Y = dataset[:,2]
# create model
model = Sequential()
model.add(Dense(12, input_dim=2, init='uniform', activation='relu'))
model.add(Dense(2, init='uniform', activation='relu'))
#model.add(Dense(1, init='uniform', activation='sigmoid'))
model.add(Dense(1, input_dim=2, init='uniform', activation='linear'))
# Compile model
#model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X, Y, epochs=150, batch_size=10, verbose=2)
# calculate predictions
predictions = model.predict(X)
# round predictions
rounded = [round(x[0]) for x in predictions]
print(rounded)
outout=1,1,1,3,1,1,...等
【问题讨论】:
-
你为什么评论
Dense(12)和Dense(2)层? -
只是为了测试。我忘了取消注释。
-
尝试
Dense(8)而不是Dense(2)或其他架构(参见编辑后的答案)。
标签: python tensorflow keras