I am trying to get running this TensorFlow example. It seems as the placeholders that I am using are not correct. The runtime errors info does not help very much for a newbie :-)
# Building a neuronal network with TensorFlow
import tensorflow as tf
def multilayer_perceptron( x, weights, biases ):
# Hidden layer with RELU activation
layer_1 = tf.add(tf.matmul(x, weights['h1']), biases['b1'])
layer_1 = tf.nn.relu(layer_1)
# Output layer with linear activation
out_layer = tf.matmul(layer_1, weights['out']) + biases['out']
return out_layer
session = tf.Session()
nInputs = 7 # Number of inputs to the neuronal network
nHiddenPerceptrons = 5
nTypes = 10 # seven posible types of values in the output
nLearningRate = 0.001
nTrainingEpochs = 15
aInputs = [ [ 1, 1, 1, 0, 1, 1, 1 ], # zero 2
[ 1, 0, 0, 0, 0, 0, 1 ], # one -------
[ 1, 1, 0, 1, 1, 1, 0 ], # two 3 | | 1
[ 1, 1, 0, 1, 0, 1, 1 ], # three | 4 |
[ 1, 0, 1, 1, 0, 0, 1 ], # four -------
[ 0, 1, 1, 1, 0, 1, 1 ], # five | |
[ 0, 1, 1, 1, 1, 1, 1 ], # six 5 | | 7
[ 1, 1, 0, 0, 0, 0, 1 ], # seven -------
[ 1, 1, 1, 1, 1, 1, 1 ], # eight 6
[ 1, 1, 1, 1, 0, 1, 1 ] ] # nine
aOutputs = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
weights = { 'h1': tf.Variable( tf.random_normal( [ nInputs, nHiddenPerceptrons ] ) ),
'out': tf.Variable( tf.random_normal( [ nHiddenPerceptrons, nTypes ] ) ) }
biases = { 'b1': tf.Variable( tf.random_normal( [ nHiddenPerceptrons ] ) ),
'out': tf.Variable( tf.random_normal( [ nTypes ] ) ) }
x = tf.placeholder( "float", shape=[ None,] )
y = tf.placeholder( "float" )
network = multilayer_perceptron( x, weights, biases )
loss = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits( logits=network, labels=tf.placeholder( "float" ) ) )
optimizer = tf.train.AdamOptimizer( learning_rate = nLearningRate ).minimize( loss )
init = tf.global_variables_initializer()
with tf.Session() as session :
session.run( init )
# Training cycle
for epoch in range( nTrainingEpochs ) :
avg_loss = 0.
for n in range( len( aInputs ) ) :
c = session.run( [ optimizer, loss ], { x: aInputs[ n ], y: aOutputs[ n ] } )
# Compute average loss
avg_loss += c / total_batch
print("Epoch:", '%04d' % ( epoch + 1 ), "cost=", "{:.9f}".format( avg_loss ) )
print("Optimization Finished!")
but I get some runtime errors and I have no idea how to solve them. I appreciate your help with it, thanks
File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\framework\common_shapes.py", line 671, in _call_cpp_shape_fn_impl input_tensors_as_shapes, status) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\contextlib.py", line 88, in exit next(self.gen) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 466, in raise_exception_on_not_ok_status pywrap_tensorflow.TF_GetCode(status)) tensorflow.python.framework.errors_impl.InvalidArgumentError: Shape must be rank 2 but is rank 1 for 'MatMul' (op: 'MatMul') with input shapes: [?], [7,5]. During handling of the above exception, another exception occurred: Traceback (most recent call last): File "tf_nn.py", line 42, in network = multilayer_perceptron( x, weights, biases ) File "tf_nn.py", line 7, in multilayer_perceptron layer_1 = tf.add(tf.matmul(x, weights['h1']), biases['b1']) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\ops\math_ops.py", line 1816, in matmul a, b, transpose_a=transpose_a, transpose_b=transpose_b, name=name) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\ops\gen_math_ops.py", line 1217, in _mat_mul transpose_b=transpose_b, name=name) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 767, in apply_op op_def=op_def) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\framework\ops.py", line 2508, in create_op set_shapes_for_outputs(ret) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\framework\ops.py", line 1873, in set_shapes_for_outputs shapes = shape_func(op) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\framework\ops.py", line 1823, in call_with_requiring return call_cpp_shape_fn(op, require_shape_fn=True) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\framework\common_shapes.py", line 610, in call_cpp_shape_fn debug_python_shape_fn, require_shape_fn) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\framework\common_shapes.py", line 676, in _call_cpp_shape_fn_impl raise ValueError(err.message) ValueError: Shape must be rank 2 but is rank 1 for 'MatMul' (op: 'MatMul') with input shapes: [?], [7,5].