Python Tensorflow错误:ValueError:无不支持的值
这是我的测试代码。但它无法运行。终端总是给我这个错误: 回溯(最近一次呼叫最后一次):Python Tensorflow错误:ValueError:无不支持的值,python,python-3.x,tensorflow,Python,Python 3.x,Tensorflow,这是我的测试代码。但它无法运行。终端总是给我这个错误: 回溯(最近一次呼叫最后一次): 文件“desktop/test.py”,第28行, 损失=tf.reduce\u均值(tf.reduce\u和(tf.square(ys预测),reduce\u指数=[1])。 文件“/Users/sumeixu/anaconda3/lib/python3.6/site packages/tensorflow/python/ops/math_ops.py”, 第898行,二进制_op_包装 y=ops.con
文件“desktop/test.py”,第28行, 损失=tf.reduce\u均值(tf.reduce\u和(tf.square(ys预测),reduce\u指数=[1])。
文件“/Users/sumeixu/anaconda3/lib/python3.6/site packages/tensorflow/python/ops/math_ops.py”, 第898行,二进制_op_包装 y=ops.convert_to_tensor(y,dtype=x.dtype.base_dtype,name=“y”)
文件 “/Users/sumeixu/anaconda3/lib/python3.6/site packages/tensorflow/python/framework/ops.py”, 第932行,转换为张量 as_ref=False)
文件“/Users/sumeixu/anaconda3/lib/python3.6/site packages/tensorflow/python/framework/ops.py”, 第1022行,在内部\u中,将\u转换为\u张量 ret=conversion\u func(value,dtype=dtype,name=name,as\u ref=as\u ref)
文件 “/Users/sumeixu/anaconda3/lib/python3.6/site packages/tensorflow/python/framework/constant_op.py”, 第233行,在常数张量转换函数中 返回常量(v,dtype=dtype,name=name)
文件“/Users/sumeixu/anaconda3/lib/python3.6/site packages/tensorflow/python/framework/constant_op.py”, 第212行,常数 值,dtype=dtype,shape=shape,verify\u shape=verify\u shape))
文件 “/Users/sumeixu/anaconda3/lib/python3.6/site packages/tensorflow/python/framework/tensor_util.py”, 401行,在make_tensor_proto中 raise VALUERROR(“不支持无值”) ValueError:不支持任何值 请帮忙。这是我的密码。非常感谢你
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
def add_layer(inputs,in_size,out_size,activation_function=None):
Weights=tf.Variable(tf.random_normal([in_size,out_size]))
biases=tf.Variable(tf.zeros([1,out_size])+0.1)
Wx_Plus_b = tf.matmul(inputs,Weights)+biases
if activation_function is None:
outputs=Wx_Plus_b
else:
outputs=activation_function(Wx_Plus_b)
return outputs
x_data = np.linspace(-1,1,300)[:,np.newaxis]
noise=np.random.normal(0,0.05,x_data.shape)
y_data=np.square(x_data)-0.5+noise
xs=tf.placeholder(tf.float32,[None,1])
ys=tf.placeholder(tf.float32,[None,1])
l1 = add_layer(xs,1,10,activation_function=tf.nn.relu)
prediction=add_layer(l1,10,1,activation_function=None)
loss =tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1]))
train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
for i in range(1000):
sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
if i%50==0:
print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))
因此,我运行了您的代码,在我修复了第一个函数中的缩进之后,它工作得很好。如果我只是像您编写的那样复制粘贴它,我也会得到None错误(因为您没有从函数返回任何内容)。因此,只要解决缩进,它应该工作 要获得损失,您只需获取如下值:
loss_list = []
if i%50==0:
my_loss = sess.run(loss,feed_dict={xs:x_data,ys:y_data})
loss_list.append(my_loss)
谢谢你让我知道这件事。我修正了缩进,没有出现错误。我实际上想显示错误减少,而我将I从1增加到1000。对于范围(1000)内的i,如果i%50==0:print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}),则运行(train_step,feed_dict={xs x:x_data,ys:y_data})。有没有办法解决这个问题?对你有用吗?它不会在我的终端中显示任何内容:/