ValueError:无法为形状为((?,4)'的张量'Placeholder_36:0'提供形状(4,)的值

时间:2019-03-01 02:56:09

标签: python-3.x tensorflow machine-learning

我正在尝试实现张量流回归模型,我的数据形状为train_X =(200,4)和train_Y =(200,)。我遇到形状错误,这是我的一段代码,任何人都可以提及我在哪里做错误。

df = pd.read_csv('all.csv')

df = df.drop('时间',轴= 1)

print(df.describe())#了解数据集

train_Y = df [“力量”]

train_X = df.drop('power',axis = 1)

train_X = numpy.asarray(train_X)

train_Y = numpy.asarray(train_Y)

n_samples = train_X.shape [0]

tf图形输入

X = tf.placeholder('float',[None,len(train_X [0])])

Y = tf.placeholder(“ float”)

设置模型权重

W = tf.Variable(rng.randn(),name =“ weight”)

b = tf.Variable(rng.randn(),name =“ bias”)

构建线性模型

pred = tf.add(tf.multiply(X,W),b)

均方误差

cost = tf.reduce_sum(tf.pow(pred-Y,2))/(2 * n_samples)

梯度下降

注意,因为Variable对象是

,minimum()知道要修改W和b

trainable =默认为True

optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

初始化变量(即分配其默认值)

init = tf.global_variables_initializer()

开始训练

以tf.Session()作为会话:

# Run the initializer

sess.run(init)

# Fit all training data

for epoch in range(training_epochs):

    for (x, y) in zip(train_X, train_Y):

        sess.run(optimizer, feed_dict={X: x, Y: y})

    # Display logs per epoch step
    if (epoch+1) % display_step == 0:
        c = sess.run(cost, feed_dict={X: train_X, Y:train_Y})
        print("Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(c), \
            "W=", sess.run(W), "b=", sess.run(b))

print("Optimization Finished!")
training_cost = sess.run(cost, feed_dict={X: train_X, Y: train_Y})
print("Training cost=", training_cost, "W=", sess.run(W), "b=", sess.run(b), '\n')

# Graphic display
plt.plot(train_X, train_Y, 'ro', label='Original data')
plt.plot(train_X, sess.run(W) * train_X + sess.run(b), label='Fitted line')
plt.legend()
plt.show()enter code here

1 个答案:

答案 0 :(得分:0)

我改变了形状并解决了问题

train_y = np.reshape(train_y,(-1,1))