2017-06-22 20 views
8

Tôi đang cố gắng tóm tắt quá trình đào tạo mạng thần kinh bên dưới.Lỗi kết hợp chuỗi tổng hợp Tensorflow: Hình dạng [-1,784] có kích thước phủ định

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

Tôi đang thử nghiệm mỗi 10 bước với một lô dữ liệu thử nghiệm ngẫu nhiên. Sự cố xảy ra với người viết truyện. Các sess.run() bên trong vòng lặp for ném sau lỗi.

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"]()]] 

Nếu tôi xóa tất cả các tác giả và tóm tắt tóm tắt, mô hình chạy tốt. Bạn có thể giúp tôi phát hiện vấn đề ở đây không? Tôi đã cố gắng thao tác các hình dạng của tensors nhưng không có nơi nào.

+1

Đó là sự cố với bảng điều khiển IPython. Nếu bạn có vấn đề tương tự quấn toàn bộ mã trong tf.Graph() dưới dạng g và chạy phiên trong biểu đồ đó. – nsuman

Trả lời

1

Tôi cũng gặp sự cố này. Tìm kiếm xung quanh sự đồng thuận cơ bản là kiểm tra các vấn đề ở một nơi khác trong mã của bạn.

Điều gì đã khắc phục được cho tôi là tôi đang thực hiện sess.run(summary_op) mà không cần cung cấp dữ liệu cho trình giữ chỗ của mình.

Dòng chảy dường như hơi lạ với trình giữ chỗ, thường họ sẽ không nhớ bạn không cho chúng ăn nếu bạn đang cố gắng đánh giá một phần của biểu đồ độc lập với chúng. Ở đây mặc dù, nó đã làm.

3

Từ một bình luận của câu trả lời bị xóa, từ các poster ban đầu:

Tôi thực sự xây dựng một mạng lưới thần kinh dưới with tf.Graph() as g. Tôi đã xóa phiên tương tác và bắt đầu phiên là . Nó đã khắc phục được vấn đề.

Biểu đồ g không được đánh dấu là biểu đồ mặc định theo cách đó, do đó phiên (tf.InteractiveSession trong mã ban đầu) sẽ sử dụng biểu đồ khác thay thế.

Lưu ý rằng tôi tình cờ gặp phải ở đây vì có thông báo lỗi tương tự. Trong trường hợp của tôi, tôi đã vô tình như thế này:

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

I.e. Tôi đã không cung cấp chỗ dành sẵn. Có vẻ như một số hoạt động tensor khác sau đó có thể dẫn đến lỗi này gây nhầm lẫn như nội bộ một chiều không xác định được biểu diễn như -1.

0

Điều này có thể liên quan đến việc khởi tạo InteractiveSession.

Tôi đã khởi tạo nó ngay từ đầu và sau đó nó hoạt động - sau đó khởi tạo biến toàn cầu trong phiên.

Tôi không thể tạo lại lỗi với mã cũ, khiến các cài đặt này không thể đoán trước hoặc lưu vào bộ nhớ cache ở đâu đó.

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}) 
Các vấn đề liên quan