Reputation: 500
This is my test code. But it could not run. Terminal always gave me this error:
Traceback (most recent call last):
File "desktop/test.py", line 28, in loss =tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1])).
File "/Users/sumeixu/anaconda3/lib/python3.6/site-packages/tensorflow/python/ops/math_ops.py", line 898, in binary_op_wrapper y = ops.convert_to_tensor(y, dtype=x.dtype.base_dtype, name="y")
File "/Users/sumeixu/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 932, in convert_to_tensor as_ref=False)
File "/Users/sumeixu/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 1022, in internal_convert_to_tensor ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
File "/Users/sumeixu/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py", line 233, in _constant_tensor_conversion_function return constant(v, dtype=dtype, name=name)
File "/Users/sumeixu/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py", line 212, in constant value, dtype=dtype, shape=shape, verify_shape=verify_shape))
File "/Users/sumeixu/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/tensor_util.py", line 401, in make_tensor_proto raise ValueError("None values not supported.").
ValueError: None values not supported.
Help please. Blew is my code. Thank you so much!
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}))
Upvotes: 2
Views: 21013
Reputation: 284
So I ran your code and It works just fine, after I fixed the indent in your first function. If I just copy paste it as you wrote it, I also get the None error (since you return nothing from the function). So just solve the indent and it should work!
To get the loss you can just fetch the value as follows:
loss_list = []
if i%50==0:
my_loss = sess.run(loss,feed_dict={xs:x_data,ys:y_data})
loss_list.append(my_loss)
Upvotes: 3