如何在tflearn中为z = x /(x + y)编写基本神经网络?

时间:2018-02-08 12:43:42

标签: python tensorflow neural-network linear-regression tflearn

对于深度学习世界的新手,在阅读了很多理论之后,我试图理解神经网络是如何实际学习的,所以我提供了简单的数据集,其中输入列是[[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 !!

1 个答案:

答案 0 :(得分:1)

您的网络无法学习该功能。

网络中只有一个神经元。这相当于ax + by + c,你试图学习a,b,c。

您的模型需要更多的非线性。您需要为模型添加更多具有非线性激活的图层和神经元,以便能够学习所需的功能。