对于深度学习世界的新手,在阅读了很多理论之后,我试图理解神经网络是如何实际学习的,所以我提供了简单的数据集,其中输入列是[[x,x + y]。 ..]和输出列[[x /(x + y)] ...]并尝试使用tflearn,但即使经过无数次尝试(2天),网络也无法将损失降至最低。即使在最小化之后(在添加tanh层之后),网络预测仍然很少。有人可以帮我弄这个吗?下面是代码。
neural_net = tflearn.input_data(shape=[None, 2])
neural_net = tflearn.fully_connected(neural_net, 1,
activation='linear', bias=True)
neural_net = tflearn.regression(neural_net, optimizer='sgd',
learning_rate=0.001, loss='mean_square')
# train
model = tflearn.DNN(neural_net,tensorboard_verbose=3)
model.fit(OR, Y_truth, n_epoch=1000,
snapshot_epoch=False,validation_set=0.1,batch_size=10)
print model.get_weights(neural_net.W)
# prediction
print model.predict([[2,2]])
输出预测为0.13946463 !!
答案 0 :(得分:1)
您的网络无法学习该功能。
网络中只有一个神经元。这相当于ax + by + c,你试图学习a,b,c。
您的模型需要更多的非线性。您需要为模型添加更多具有非线性激活的图层和神经元,以便能够学习所需的功能。