1
votes

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}))
1

1 Answers

3
votes

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)