title: Python / Tensorflow - Input to reshape is a tensor with 92416 values, but the requested shape requires a multiple of 2304
body: <p>I have the following code portion for a convolutional neural network:</p>
  
  <pre><code>import numpy as np
  import matplotlib.pyplot as plt
  import cifar_tools
  import tensorflow as tf
  
  data, labels = cifar_tools.read_data('C:\\Users\\abc\\Desktop\\temp')
  
  x = tf.placeholder(tf.float32, [None, 150 * 150])
  y = tf.placeholder(tf.float32, [None, 2])
  
  w1 = tf.Variable(tf.random_normal([5, 5, 1, 64]))
  b1 = tf.Variable(tf.random_normal([64]))
  
  w2 = tf.Variable(tf.random_normal([5, 5, 64, 64]))
  b2 = tf.Variable(tf.random_normal([64]))
  
  w3 = tf.Variable(tf.random_normal([6*6*64, 1024]))
  b3 = tf.Variable(tf.random_normal([1024]))
  
  w_out = tf.Variable(tf.random_normal([1024, 2]))
  b_out = tf.Variable(tf.random_normal([2]))
  
  def conv_layer(x,w,b):
      conv = tf.nn.conv2d(x,w,strides=[1,1,1,1], padding = 'SAME')
      conv_with_b = tf.nn.bias_add(conv,b)
      conv_out = tf.nn.relu(conv_with_b)
      return conv_out
  
  def maxpool_layer(conv,k=2):
      return tf.nn.max_pool(conv, ksize=[1,k,k,1], strides=[1,k,k,1], padding='SAME')
  
  def model():
      x_reshaped = tf.reshape(x, shape=[-1,150,150,1])
  
      conv_out1 = conv_layer(x_reshaped, w1, b1)
      maxpool_out1 = maxpool_layer(conv_out1)
      norm1 = tf.nn.lrn(maxpool_out1, 4, bias=1.0, alpha=0.001/9.0, beta=0.75)
  
      conv_out2 = conv_layer(norm1, w2, b2)
      maxpool_out2 = maxpool_layer(conv_out2)
      norm2 = tf.nn.lrn(maxpool_out2, 4, bias=1.0, alpha=0.001/9.0, beta=0.75)
  
      maxpool_reshaped = tf.reshape(maxpool_out2, [-1,w3.get_shape().as_list()[0]])
      local = tf.add(tf.matmul(maxpool_reshaped, w3), b3)
      local_out = tf.nn.relu(local)
  
      out = tf.add(tf.matmul(local_out, w_out), b_out)
      return out
  
  model_op = model()
  
  cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(model_op, y))
  train_op = tf.train.AdamOptimizer(learning_rate=0.001).minimize(cost)
  
  correct_pred = tf.equal(tf.argmax(model_op, 1), tf.argmax(y,1))
  accuracy = tf.reduce_mean(tf.cast(correct_pred,tf.float32))
  </code></pre>
  
  <p>I'm reading <code>150x150</code> grayscale images, but couldn't understand the following error I'm having:</p>
  
  <pre><code>EPOCH 0
  Traceback (most recent call last):
    File "C:\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1021, in _do_call
      return fn(*args)
    File "C:\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1003, in _run_fn
      status, run_metadata)
    File "C:\Python35\lib\contextlib.py", line 66, in __exit__
      next(self.gen)
    File "C:\Python35\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 469, in raise_exception_on_not_ok_status
      pywrap_tensorflow.TF_GetCode(status))
  tensorflow.python.framework.errors_impl.InvalidArgumentError: Input to reshape is a tensor with 92416 values, but the requested shape requires a multiple of 2304
           [[Node: Reshape_1 = Reshape[T=DT_FLOAT, Tshape=DT_INT32, _device="/job:localhost/replica:0/task:0/cpu:0"](MaxPool_1, Reshape_1/shape)]]
  
  During handling of the above exception, another exception occurred:
  
  Traceback (most recent call last):
    File "cnn.py", line 70, in &lt;module&gt;
      _, accuracy_val = sess.run([train_op, accuracy], feed_dict={x: batch_data, y: batch_onehot_vals})
    File "C:\Python35\lib\site-packages\tensorflow\python\client\session.py", line 766, in run
      run_metadata_ptr)
    File "C:\Python35\lib\site-packages\tensorflow\python\client\session.py", line 964, in _run
      feed_dict_string, options, run_metadata)
    File "C:\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1014, in _do_run
      target_list, options, run_metadata)
    File "C:\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1034, in _do_call
      raise type(e)(node_def, op, message)
  tensorflow.python.framework.errors_impl.InvalidArgumentError: Input to reshape is a tensor with 92416 values, but the requested shape requires a multiple of 2304
           [[Node: Reshape_1 = Reshape[T=DT_FLOAT, Tshape=DT_INT32, _device="/job:localhost/replica:0/task:0/cpu:0"](MaxPool_1, Reshape_1/shape)]]
  
  Caused by op 'Reshape_1', defined at:
    File "cnn.py", line 50, in &lt;module&gt;
      model_op = model()
    File "cnn.py", line 43, in model
      maxpool_reshaped = tf.reshape(maxpool_out2, [-1,w3.get_shape().as_list()[0]])
    File "C:\Python35\lib\site-packages\tensorflow\python\ops\gen_array_ops.py", line 2448, in reshape
      name=name)
    File "C:\Python35\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 759, in apply_op
      op_def=op_def)
    File "C:\Python35\lib\site-packages\tensorflow\python\framework\ops.py", line 2240, in create_op
      original_op=self._default_original_op, op_def=op_def)
    File "C:\Python35\lib\site-packages\tensorflow\python\framework\ops.py", line 1128, in __init__
      self._traceback = _extract_stack()
  
  InvalidArgumentError (see above for traceback): Input to reshape is a tensor with 92416 values, but the requested shape requires a multiple of 2304
           [[Node: Reshape_1 = Reshape[T=DT_FLOAT, Tshape=DT_INT32, _device="/job:localhost/replica:0/task:0/cpu:0"](MaxPool_1, Reshape_1/shape)]]
  </code></pre>
  
  <p><strong>EDIT-1</strong></p>
  
  <p>Got this new error after modifying based on those edits:</p>
  
  <pre><code>x_reshaped = tf.reshape(x, shape=[-1,150,150,1])
  batch_size = x_reshaped.get_shape().as_list()[0]
  
  ... Same code as above ...
  
  maxpool_reshaped = tf.reshape(maxpool_out2, [batch_size, -1])
  </code></pre>
  
  <p>Error:</p>
  
  <pre><code>Traceback (most recent call last):
    File "cnn.py", line 52, in &lt;module&gt;
      model_op = model()
    File "cnn.py", line 45, in model
      maxpool_reshaped = tf.reshape(maxpool_out2, [batch_size, -1])
    File "C:\Python35\lib\site-packages\tensorflow\python\ops\gen_array_ops.py", line 2448, in reshape
      name=name)
    File "C:\Python35\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 493, in apply_op
      raise err
    File "C:\Python35\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 490, in apply_op
      preferred_dtype=default_dtype)
    File "C:\Python35\lib\site-packages\tensorflow\python\framework\ops.py", line 669, in convert_to_tensor
      ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
    File "C:\Python35\lib\site-packages\tensorflow\python\framework\constant_op.py", line 176, in _constant_tensor_conversion_function
      return constant(v, dtype=dtype, name=name)
    File "C:\Python35\lib\site-packages\tensorflow\python\framework\constant_op.py", line 165, in constant
      tensor_util.make_tensor_proto(value, dtype=dtype, shape=shape, verify_shape=verify_shape))
    File "C:\Python35\lib\site-packages\tensorflow\python\framework\tensor_util.py", line 441, in make_tensor_proto
      tensor_proto.string_val.extend([compat.as_bytes(x) for x in proto_values])
    File "C:\Python35\lib\site-packages\tensorflow\python\framework\tensor_util.py", line 441, in &lt;listcomp&gt;
      tensor_proto.string_val.extend([compat.as_bytes(x) for x in proto_values])
    File "C:\Python35\lib\site-packages\tensorflow\python\util\compat.py", line 65, in as_bytes
      (bytes_or_text,))
  TypeError: Expected binary or unicode string, got None
  </code></pre>
  
  <p><strong>EDIT-2</strong></p>
  
  <p>After doing the following edits (in addtion to removing <code>batch_size</code>:</p>
  
  <pre><code>w3 = tf.Variable(tf.random_normal([361, 256])) 
  ...
  ...
  w_out = tf.Variable(tf.random_normal([256, 2])) 
  </code></pre>
  
  <p>I'm having the following error:</p>
  
  <pre><code>EPOCH 0
  W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\framework\op_kernel.cc:975] Invalid argument: logits and labels must be same size: logits_size=[256,2] labels_size=[1,2]
           [[Node: SoftmaxCrossEntropyWithLogits = SoftmaxCrossEntropyWithLogits[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"](Reshape_2, Reshape_3)]]
  Traceback (most recent call last):
    File "C:\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1021, in _do_call
      return fn(*args)
    File "C:\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1003, in _run_fn
      status, run_metadata)
    File "C:\Python35\lib\contextlib.py", line 66, in __exit__
      next(self.gen)
    File "C:\Python35\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 469, in raise_exception_on_not_ok_status
      pywrap_tensorflow.TF_GetCode(status))
  tensorflow.python.framework.errors_impl.InvalidArgumentError: logits and labels must be same size: logits_size=[256,2] labels_size=[1,2]
           [[Node: SoftmaxCrossEntropyWithLogits = SoftmaxCrossEntropyWithLogits[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"](Reshape_2, Reshape_3)]]
  
  During handling of the above exception, another exception occurred:
  
  Traceback (most recent call last):
    File "cnn.py", line 73, in &lt;module&gt;
      _, accuracy_val = sess.run([train_op, accuracy], feed_dict={x: batch_data, y: batch_onehot_vals})
    File "C:\Python35\lib\site-packages\tensorflow\python\client\session.py", line 766, in run
      run_metadata_ptr)
    File "C:\Python35\lib\site-packages\tensorflow\python\client\session.py", line 964, in _run
      feed_dict_string, options, run_metadata)
    File "C:\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1014, in _do_run
      target_list, options, run_metadata)
    File "C:\Python35\lib\site-packages\tensorflow\python\client\session.py", line 1034, in _do_call
      raise type(e)(node_def, op, message)
  tensorflow.python.framework.errors_impl.InvalidArgumentError: logits and labels must be same size: logits_size=[256,2] labels_size=[1,2]
           [[Node: SoftmaxCrossEntropyWithLogits = SoftmaxCrossEntropyWithLogits[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"](Reshape_2, Reshape_3)]]
  
  Caused by op 'SoftmaxCrossEntropyWithLogits', defined at:
    File "cnn.py", line 55, in &lt;module&gt;
      cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(model_op, y))
    File "C:\Python35\lib\site-packages\tensorflow\python\ops\nn_ops.py", line 1449, in softmax_cross_entropy_with_logits
      precise_logits, labels, name=name)
    File "C:\Python35\lib\site-packages\tensorflow\python\ops\gen_nn_ops.py", line 2265, in _softmax_cross_entropy_with_logits
      features=features, labels=labels, name=name)
    File "C:\Python35\lib\site-packages\tensorflow\python\framework\op_def_library.py", line 759, in apply_op
      op_def=op_def)
    File "C:\Python35\lib\site-packages\tensorflow\python\framework\ops.py", line 2240, in create_op
      original_op=self._default_original_op, op_def=op_def)
    File "C:\Python35\lib\site-packages\tensorflow\python\framework\ops.py", line 1128, in __init__
      self._traceback = _extract_stack()
  
  InvalidArgumentError (see above for traceback): logits and labels must be same size: logits_size=[256,2] labels_size=[1,2]
           [[Node: SoftmaxCrossEntropyWithLogits = SoftmaxCrossEntropyWithLogits[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/cpu:0"](Reshape_2, Reshape_3)]]
  </code></pre>
  
  <p><strong>EDIT-3</strong></p>
  
  <p>This is how the binary (pickled) file looks like [label, filename, data]:</p>
  
  <pre><code>[array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1]), array(['1.jpg', '10.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg',
         '7.jpg', '8.jpg', '9.jpg'], 
        dtype='&lt;U6'), array([[142, 138, 134, ..., 128, 125, 122],
         [151, 151, 149, ..., 162, 159, 157],
         [120, 121, 122, ..., 132, 128, 122],
         ..., 
         [179, 175, 177, ..., 207, 205, 203],
         [126, 129, 130, ..., 134, 130, 134],
         [165, 170, 175, ..., 193, 193, 187]])]
  </code></pre>
  
  <p>How can I solve this issue?</p>