【发布时间】:2018-05-08 07:03:29
【问题描述】:
我正在使用张量流库来构建一个非常简单的 2 层人工神经网络来执行线性回归。 我的问题是结果似乎与预期相去甚远。几个小时以来,我一直试图找出我的错误,但没有希望。我是张量流和神经网络的新手,所以这可能是一个微不足道的错误。谁能知道我做错了什么?
from __future__ import print_function
import tensorflow as tf
import numpy as np
# Python optimisation variables
learning_rate = 0.02
data_size=100000
data_length=100
train_input=10* np.random.rand(data_size,data_length);
train_label=train_input.sum(axis=1);
train_label=np.reshape(train_label,(data_size,1));
test_input= np.random.rand(data_size,data_length);
test_label=test_input.sum(axis=1);
test_label=np.reshape(test_label,(data_size,1));
x = tf.placeholder(tf.float32, [data_size, data_length])
y = tf.placeholder(tf.float32, [data_size, 1])
W1 = tf.Variable(tf.random_normal([data_length, 1], stddev=0.03), name='W1')
b1 = tf.Variable(tf.random_normal([data_size, 1]), name='b1')
y_ = tf.add(tf.matmul(x, W1), b1)
cost = tf.reduce_mean(tf.square(y-y_))
optimiser=tf.train.GradientDescentOptimizer(learning_rate=learning_rate)
.minimize(cost)
init_op = tf.global_variables_initializer()
correct_prediction = tf.reduce_mean(tf.square(y-y_))
accuracy = tf.cast(correct_prediction, tf.float32)
with tf.Session() as sess:
sess.run(init_op)
_, c = sess.run([optimiser, cost],
feed_dict={x:train_input , y:train_label})
k=sess.run(b1)
print(k)
print(sess.run(accuracy, feed_dict={x: test_input, y: test_label}))
感谢您的帮助!
【问题讨论】:
-
你在训练哪些数据?您是否尝试过将您的 RMSE 与通过更简单的线性回归获得的 RMSE 进行比较(也许使用 scikit-learn 的实现)?您是否尝试过改变学习率?似乎您只对数据进行一次传递(时期):也许您应该训练几个时期?
标签: tensorflow neural-network regression linear-regression