Numpy 无法为张量';占位符:0';,其形状为';(?,3)和#x27;

Numpy 无法为张量';占位符:0';,其形状为';(?,3)和#x27;,numpy,tensorflow,Numpy,Tensorflow,X_p的形状为[None,3],X的形状为[2,3],y_p=[None,1],y=[2,1] 我真的不明白占位符为什么要停止numpy数组来获取数据。您遇到的问题是,您正在使用x作为循环变量来覆盖x变量。因此,当您尝试将x传递到提要dict时,您传递的是循环变量,而不是张量。尝试将循环变量更改为其他变量,例如: import numpy as np import tensorflow as tf X_p = tf.placeholder(tf.float32,[None,3] ) y_p

X_p的形状为[None,3],X的形状为[2,3],y_p=[None,1],y=[2,1]


我真的不明白占位符为什么要停止numpy数组来获取数据。

您遇到的问题是,您正在使用
x
作为循环变量来覆盖
x
变量。因此,当您尝试将
x
传递到提要dict时,您传递的是循环变量,而不是张量。尝试将循环变量更改为其他变量,例如:

import numpy as np
import tensorflow as tf

X_p = tf.placeholder(tf.float32,[None,3]  )
y_p = tf.placeholder(tf.float32, [None,1])

print(X_p)

x = [[1,2,3],[1,2,3]]
y = [[1],[2]]

weight = tf.Variable(tf.random_normal([3,1]))



model = tf.nn.sigmoid(tf.matmul(X_p,weight)+1)

error = tf.reduce_sum(y * tf.log(model))

optimizer = tf.train.GradientDescentOptimizer(0.01).minimize(error)

init = tf.initialize_all_variables()

with tf.Session() as sess:
    sess.run(init)

    for x in range(100):
        sess.run(optimizer, {X_p: x, y_p:y})

您遇到的问题是,您正在使用
x
作为循环变量来覆盖
x
变量。因此,当您尝试将
x
传递到提要dict时,您传递的是循环变量,而不是张量。尝试将循环变量更改为其他变量,例如:

import numpy as np
import tensorflow as tf

X_p = tf.placeholder(tf.float32,[None,3]  )
y_p = tf.placeholder(tf.float32, [None,1])

print(X_p)

x = [[1,2,3],[1,2,3]]
y = [[1],[2]]

weight = tf.Variable(tf.random_normal([3,1]))



model = tf.nn.sigmoid(tf.matmul(X_p,weight)+1)

error = tf.reduce_sum(y * tf.log(model))

optimizer = tf.train.GradientDescentOptimizer(0.01).minimize(error)

init = tf.initialize_all_variables()

with tf.Session() as sess:
    sess.run(init)

    for x in range(100):
        sess.run(optimizer, {X_p: x, y_p:y})

我不能复制这个。当我使用自己的
优化器
变量运行会话时,它工作正常。也许你可以提供一个更完整的例子,其他人可以用它来重现你的问题。@Mark_,我可以,我不能重现这个。当我使用自己的
优化器
变量运行会话时,它工作正常。也许你可以提供一个更完整的例子,其他人可以实际运行来重现你的问题。@Mark_,我很好,做到了。哈哈,真不敢相信我怎么没有注意到。谢谢:)哈哈,真不敢相信我怎么没注意到。谢谢:)