请注意,由于相同的错误消息,我偶然发现了这里.就我而言,我不小心遇到了这样的事情:input_data = tf.placeholder(tf.float32, shape=(None, 50))input_data = tf.tanh(input_data)session.run(..., feed_dict={input_data: ...})即我没有喂占位符.似乎其他一些张量运算会导致这种令人困惑的错误,因为在内部未定义的维度表示为 -1.I am trying to get summary of a training process of the neural net below.import tensorflow as tfimport numpy as npfrom tensorflow.examples.tutorials.mnist import input_datamnist = input_data.read_data_sets(".\MNIST",one_hot=True)# Create the modeldef 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_accuracyif __name__ =="__main__":print(train_and_test(500, 200, 0.001, 10000, 100))I am testing the model every 10 step with a random batch of test data.The problem is in the summery writer. The sess.run() inside the for loop throws following error. Traceback (most recent call last): File "<ipython-input-18-78c88c8e6471>", line 1, in <module> runfile('C:/Users/SumanNepal/Documents/Projects/MNISTtensorflow/mnist.py', wdir='C:/Users/SumanNepal/Documents/Projects/MNISTtensorflow') File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 880, in runfileexecfile(filename, namespace) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfileexec(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 _runfeed_dict_string, options, run_metadata) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1132, in _do_runtarget_list, options, run_metadata) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1152, in _do_callraise 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 mainkernel.start() File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\ipykernel\kernelapp.py", line 477, in startioloop.IOLoop.instance().start() File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\zmq\eventloop\ioloop.py", line 177, in startsuper(ZMQIOLoop, self).start() File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tornado\ioloop.py", line 888, in starthandler_func(fd_obj, events) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tornado\stack_context.py", line 277, in null_wrapperreturn fn(*args, **kwargs) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\zmq\eventloop\zmqstream.py", line 440, in _handle_eventsself._handle_recv() File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\zmq\eventloop\zmqstream.py", line 472, in _handle_recvself._run_callback(callback, msg) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\zmq\eventloop\zmqstream.py", line 414, in _run_callbackcallback(*args, **kwargs) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tornado\stack_context.py", line 277, in null_wrapperreturn fn(*args, **kwargs) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 283, in dispatcherreturn self.dispatch_shell(stream, msg) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 235, in dispatch_shellhandler(stream, idents, msg) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\ipykernel\kernelbase.py", line 399, in execute_requestuser_expressions, allow_stdin) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\ipykernel\ipkernel.py", line 196, in do_executeres = 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_cellreturn super(ZMQInteractiveShell, self).run_cell(*args, **kwargs) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2717, in run_cellinteractivity=interactivity, compiler=compiler, result=result) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2827, in run_ast_nodesif self.run_code(code, result): File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2881, in run_codeexec(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 runfileexecfile(filename, namespace) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfileexec(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 placeholderreturn 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 _placeholdername=name) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 767, in apply_opop_def=op_def) File "C:\Users\Suman Nepal\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py", line 2506, in create_oporiginal_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 deleted all the summary writers and summary, the model runs fine.Can you help me spot the problem here? I tried manipulating the shapes of tensors but got nowhere. 解决方案 From one comment of the deleted answer, from the original poster:The graph g was not marked as the default graph that way, thus the session (tf.InteractiveSession in the original code) would use another graph instead.Note that I stumbled upon here because of the same error message. In my case, I had accidentally something like this:input_data = tf.placeholder(tf.float32, shape=(None, 50))input_data = tf.tanh(input_data)session.run(..., feed_dict={input_data: ...})I.e. I didn't feed the placeholder. It seems that some other tensor operations can then result in this confusing error as internally an undefined dimension is represented as -1. 这篇关于Tensorflow 总结合并错误:形状 [-1,784] 具有负维度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
09-11 03:10