Dynamic
这是我的代码。当我在Python Shell中输入import tensorflow as tf
# H(x) = Wx + b
W = tf.Variable(tf.random_normal([1],name='weight'))
b = tf.Variable(tf.random_normal([1],name='bias'))
X = tf.placeholder(tf.float32)
Y = tf.placeholder(tf.float32)
hypothesis = X * W + b
cost = tf.reduce_mean(tf.square(hypothesis - Y))
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01)
train = optimizer.minimize(cost)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
Weights = []
for step in range(100):
sess.run([cost,hypothesis,train], feed_dict={X:x_col[0],Y:y_col[0]})
if step % 99 ==0:
print(step, sess.run(cost), sess.run(W), sess.run(b))
时,我得到x_col[0]
,而对于array([ 3., 5., 73., 33.], dtype=float32)
,我得到y_col[0]
。
所以我认为代码的工作成本为0,W为1和0的b。但是这个错误出现了。我不知道如何解决这个问题
有关array([ 3., 5., 73., 33.])
的信息
我得到sess.run([cost,hypothesis,train], feed_dict={X:x_col[0],Y:y_col[0]})
。
答案 0 :(得分:1)
在DECLARE @TableName sysname = 'MyTempTable', @TableSchema sysname = 'dbo'
DECLARE @SQL NVARCHAR(MAX)
SELECT @SQL = STUFF((SELECT
' UNION ALL select ' +
QUOTENAME(Table_Name,'''') + ' AS TableName, ' +
QUOTENAME(Column_Name,'''') + ' AS ColumnName, ' +
CASE WHEN DATA_TYPE IN ('XML','HierarchyID','Geometry','Geography','text','ntext') THEN 'MAX(DATALENGTH('
ELSE 'MAX(LEN('
END + QUOTENAME(Column_Name) + ')) AS MaxLength, ' +
QUOTENAME(C.DATA_TYPE,'''') + ' AS DataType, ' +
CAST(COALESCE(C.CHARACTER_MAXIMUM_LENGTH, C.NUMERIC_SCALE,0) AS VARCHAR(10)) + ' AS DataWidth ' +
'FROM ' + QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(Table_Name)
FROM INFORMATION_SCHEMA.COLUMNS C
WHERE TABLE_NAME = @TableName
AND table_schema = @TableSchema
--AND DATA_TYPE NOT IN ('XML','HierarchyID','Geometry','Geography')
ORDER BY COLUMN_NAME
FOR XML PATH(''),Type).value('.','varchar(max)'),1,11,'')
EXECUTE (@SQL)
声明中
print
您使用的是print(step, sess.run(cost), sess.run(W), sess.run(b))
,但费用取决于sess.run(cost)
和X
,您应提供其值,因为它们是占位符。因此,您需要在Y
中提供
feed_dict
答案 1 :(得分:0)
在TensorFlow中,您可以定义使用sess.run()
语句执行的计算图。作为该图表的一部分,cost
操作由占位符X
和Y
定义。要计算cost
,您必须为X
和Y
提供值。
在print
声明中,您致电sess.run(cost)
而未提供X
和Y
。这就是错误的原因。
但你已经执行了图表。只需存储结果值:
C, H, _ = sess.run([cost,hypothesis,train], feed_dict={X:x_col[0],Y:y_col[0]})
并打印费用C
和假设H
答案 2 :(得分:0)
@ layog的回答是对的。只是想向您展示您应该使用的代码:
for step in range(100):
cost_val, W_val, b_val, _ = sess.run([cost, W, b, train],
feed_dict={X:x_col[0],Y:y_col[0]})
if step % 99 ==0:
print(step, cost_val, W_val, b_val)
一次性运行训练操作和计算张量值效率更高(请注意,您不必指定hypothesis
)。如果要显式计算任何张量,您也必须通过占位符:
sess.run(cost, feed_dict={X:x_col[0],Y:y_col[0]})
答案 3 :(得分:0)
检查 所有 ,您之前定义的占位符已包含/输入到feed_dict中。这是因为在计算图形时,占位符是在内存中创建的,如果其中每个占位符 都已在feed_dict中分配了实值,则tensorflow会看起来 至少在我的情况下,它会产生这样的错误。
答案 4 :(得分:0)
我正在使用google colab,但遇到了同样的问题。 我通过按“运行时”选项解决了问题,然后按了“重新启动并全部运行”!
这将重新启动google colab中的所有代码,并且不再显示错误!