很简单的问题ANN都解决不了? Tensorflow 神经网络,人工智能
Very easy problem can't be solved by the ANN? Tensorflow Neural Net, Artificial Intelligence
我不明白为什么下面的 ANN 无法学习这个极其简单的输入输出问题。我想我的代码中有错误,但我没有找到它。
X = np.array([[ 1., 1., -1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]])
Y = np.array([[ 1., 1., -5., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]])
model = Sequential()
model.add(Dense(4, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(16, activation='relu'))
model.add(Dense(4, activation='linear'))
model.compile(loss='mse', optimizer='adam', metrics=['mae'])
erg = model.fit(X,Y, epochs=10, batch_size=1, verbose=1)
就像 Matias 提到的那样,您在最后一层使用 softmax 激活,它不能用于在数据集中生成结果,因为只有当您设置数据集目标时,softmax 激活才有用作为输出层中的激活是某种概率。使用 linear 而不是 softmax 应该会有所帮助。
model.add(Dense(4, activation='linear'))
我不明白为什么下面的 ANN 无法学习这个极其简单的输入输出问题。我想我的代码中有错误,但我没有找到它。
X = np.array([[ 1., 1., -1., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]])
Y = np.array([[ 1., 1., -5., 1.],
[ 1., 1., 1., 1.],
[ 1., 1., 1., 1.]])
model = Sequential()
model.add(Dense(4, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(16, activation='relu'))
model.add(Dense(4, activation='linear'))
model.compile(loss='mse', optimizer='adam', metrics=['mae'])
erg = model.fit(X,Y, epochs=10, batch_size=1, verbose=1)
就像 Matias 提到的那样,您在最后一层使用 softmax 激活,它不能用于在数据集中生成结果,因为只有当您设置数据集目标时,softmax 激活才有用作为输出层中的激活是某种概率。使用 linear 而不是 softmax 应该会有所帮助。
model.add(Dense(4, activation='linear'))