Tensorflow Summarization Merge Error: Form [-1,784] has negative dimensions

I am trying to get a summary of the neural network learning process below.

import tensorflow as tf import numpy as np from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets(".\MNIST",one_hot=True) # Create the model def train_and_test(hidden1,hidden2, learning_rate, epochs, batch_size): with tf.name_scope("first_layer"): input_data = tf.placeholder(tf.float32, [batch_size, 784], name = "input") weights1 = tf.Variable( tf.random_normal(shape =[784, hidden1],stddev=0.1),name = "weights") bias = tf.Variable(tf.constant(0.0,shape =[hidden1]), name = "bias") activation = tf.nn.relu( tf.matmul(input_data, weights1) + bias, name = "relu_act") tf.summary.histogram("first_activation", activation) with tf.name_scope("second_layer"): weights2 = tf.Variable( tf.random_normal(shape =[hidden1, hidden2],stddev=0.1), name = "weights") bias2 = tf.Variable(tf.constant(0.0,shape =[hidden2]), name = "bias") activation2 = tf.nn.relu( tf.matmul(activation, weights2) + bias2, name = "relu_act") tf.summary.histogram("second_activation", activation2) with tf.name_scope("output_layer"): weights3 = tf.Variable( tf.random_normal(shape=[hidden2, 10],stddev=0.5), name = "weights") bias3 = tf.Variable(tf.constant(1.0, shape =[10]), name = "bias") output = tf.add( tf.matmul(activation2, weights3, name = "mul"), bias3, name = "output") tf.summary.histogram("output_activation", output) y_ = tf.placeholder(tf.float32, [batch_size, 10]) with tf.name_scope("loss"): cross_entropy = tf.reduce_mean( tf.nn.softmax_cross_entropy_with_logits(labels=y_, logits=output)) tf.summary.scalar("cross_entropy", cross_entropy) with tf.name_scope("train"): train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy) with tf.name_scope("tests"): correct_prediction = tf.equal(tf.argmax(output, 1), tf.argmax(y_, 1)) accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) summary_op = tf.summary.merge_all() sess = tf.InteractiveSession() writer = tf.summary.FileWriter("./data", sess.graph) tf.global_variables_initializer().run() # Train for i in range(epochs): batch_xs, batch_ys = mnist.train.next_batch(batch_size) _, summary = sess.run([train_step,summary_op], feed_dict={input_data: batch_xs, y_: batch_ys}) writer.add_summary(summary) if i % 10 ==0: test_xs, test_ys = mnist.train.next_batch(batch_size) test_accuracy = sess.run(accuracy, feed_dict = {input_data : test_xs, y_ : test_ys}) writer.close() return test_accuracy if __name__ =="__main__": print(train_and_test(500, 200, 0.001, 10000, 100)) 

I test the model every 10 steps with random periodicity of test data. The problem is the chronicler. Sess.run () inside the for loop causes the following error.

  Traceback (most recent call last): File "<ipython-input-18-78c88c8e6471>", line 1, in <module> runfile('C:/Users/Suman Nepal/Documents/Projects/MNISTtensorflow/mnist.py', wdir='C:/Users/Suman Nepal/Documents/Projects/MNISTtensorflow') File "C:\Users\Suman Nepal\Anaconda3\lib\site- packages\spyder\utils\site\sitecustomize.py", line 880, in runfile execfile(filename, namespace) File "C:\Users\Suman Nepal\Anaconda3\lib\site- packages\spyder\utils\site\sitecustomize.py", line 102, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "C:/Users/Suman Nepal/Documents/Projects/MNISTtensorflow/mnist.py", line 68, in <module> print(train_and_test(500, 200, 0.001, 100, 100)) File "C:/Users/Suman Nepal/Documents/Projects/MNISTtensorflow/mnist.py", line 58, in train_and_test _, summary = sess.run([train_step,summary_op], feed_dict={input_data: batch_xs, y_: batch_ys}) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 789, in run run_metadata_ptr) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 997, in _run feed_dict_string, options, run_metadata) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1132, in _do_run target_list, options, run_metadata) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1152, in _do_call raise type(e)(node_def, op, message) InvalidArgumentError: Shape [-1,784] has negative dimensions [[Node: first_layer_5/input = Placeholder[dtype=DT_FLOAT, shape=[?,784], _device="/job:localhost/replica:0/task:0/cpu:0"]()]] Caused by op 'first_layer_5/input', defined at: File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\spyder\utils\ipython\start_kernel.py", line 231, in <module> main() File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\spyder\utils\ipython\start_kernel.py", line 227, in main kernel.start() File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\ipykernel\kernelapp.py", line 477, in start ioloop.IOLoop.instance().start() File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\zmq\eventloop\ioloop.py", line 177, in start super(ZMQIOLoop, self).start() File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tornado\ioloop.py", line 888, in start handler_func(fd_obj, events) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tornado\stack_context.py", line 277, in null_wrapper return fn(*args, **kwargs) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\zmq\eventloop\zmqstream.py", line 440, in _handle_events self._handle_recv() File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\zmq\eventloop\zmqstream.py", line 472, in _handle_recv self._run_callback(callback, msg) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\zmq\eventloop\zmqstream.py", line 414, in _run_callback callback(*args, **kwargs) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tornado\stack_context.py", line 277, in null_wrapper return fn(*args, **kwargs) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 283, in dispatcher return self.dispatch_shell(stream, msg) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 235, in dispatch_shell handler(stream, idents, msg) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 399, in execute_request user_expressions, allow_stdin) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\ipykernel\ipkernel.py", line 196, in do_execute res = shell.run_cell(code, store_history=store_history, silent=silent) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\ipykernel\zmqshell.py", line 533, in run_cell return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2717, in run_cell interactivity=interactivity, compiler=compiler, result=result) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2827, in run_ast_nodes if self.run_code(code, result): File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2881, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-8-78c88c8e6471>", line 1, in <module> runfile('C:/Users/Suman Nepal/Documents/Projects/MNISTtensorflow/mnist.py', wdir='C:/Users/Suman Nepal/Documents/Projects/MNISTtensorflow') File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 880, in runfile execfile(filename, namespace) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "C:/Users/Suman Nepal/Documents/Projects/MNISTtensorflow/mnist.py", line 86, in <module> File "C:/Users/Suman Nepal/Documents/Projects/MNISTtensorflow/mnist.py", line 12, in train_and_test input_data = tf.placeholder(tf.float32, [None, 784], name = "input") File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tensorflow\python\ops\array_ops.py", line 1530, in placeholder return gen_array_ops._placeholder(dtype=dtype, shape=shape, name=name) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tensorflow\python\ops\gen_array_ops.py", line 1954, in _placeholder name=name) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 767, in apply_op op_def=op_def) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 2506, in create_op original_op=self._default_original_op, op_def=op_def) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 1269, in __init__ self._traceback = _extract_stack() InvalidArgumentError (see above for traceback): Shape [-1,784] has negative dimensions [[Node: first_layer_5/input = Placeholder[dtype=DT_FLOAT, shape=[?,784], _device="/job:localhost/replica:0/task:0/cpu:0"]()]] 

If I delete all resumes and resumes, the model works fine. Can you help me identify the problem here? I tried to manipulate the forms of tensors, but did not get anywhere else.

+8
tensorflow tensorboard
source share
3 answers

From one comment of a deleted response from the original poster:

I actually create a neural network under with tf.Graph() as g . I deleted the interactive session and started the session as with tf.Session(g) as sess . This fixed the problem.

Graph g not marked as the default graph in this way, so the session ( tf.InteractiveSession in the source code) would use a different graph instead.

Please note that I came across this due to the same error message. In my case, I accidentally had something like this:

 input_data = tf.placeholder(tf.float32, shape=(None, 50)) input_data = tf.tanh(input_data) session.run(..., feed_dict={input_data: ...}) 

those. I did not feed the placeholder. It seems that some other tensor operations can lead to this confusing error, since internally the size of undefined is represented as -1.

+3
source share

I also had this problem. A search for basic consensus is to check for problems somewhere else in your code.

What was fixed for me, I did sess.run(summary_op) without submitting data for my placeholders.

The tensor flow seems a little strange with placeholders, often they will not mind that you do not feed them if you are trying to evaluate a part of the schedule that is independent of them. Here it is.

+1
source share

This may be due to the initialization of InteractiveSession .

I initialized it at the beginning and then worked - then initialized the global variables in the session.

I cannot reproduce the error with the old code, which makes it unpredictable or caching settings somewhere.

 import tensorflow as tf sess = tf.InteractiveSession() from tensorflow.examples.tutorials.mnist import input_data mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) x = tf.placeholder(tf.float32, [None, 784]) W = tf.Variable(tf.zeros([784,10])) b = tf.Variable(tf.zeros([10])) y = tf.nn.softmax(tf.matmul(x, W)+b) y_ = tf.placeholder(tf.float32, [None,10]) cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1])) train_step = tf.train.GradientDescentOptimizer(0.05).minimize(cross_entropy) sess.run(tf.global_variables_initializer()) for _ in range(1000): batch_xs, batch_ys = mnist.train.next_batch(100) #print batch_xs.shape, batch_ys.shape sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) 
0
source share

All Articles