def conv_encoder(x, weigths, biases):
  x = tf.reshape(x, shape=[-1, 28, 28, 1])
  conv1 = conv2d(x, weigths['ew1'], biases['eb1'])
  pool1 = max_pool2d(conv1)  
  conv2 = conv2d(pool1, weigths['ew2'], biases['eb2'])
  pool2 = max_pool2d(conv2)

  return pool2

def conv_decoder(x, weights, biases):
 deconv1 = deconv2d(x, weights['dw1'], biases['db1'], [batch_size, 14, 14, 32], strides=2)
 deconv2 = deconv2d(deconv1, weights['dw2'], biases['db2'], [batch_size, 28, 28, 16], strides=2)
 output = deconv2d(deconv2, weights['out'], biases['out'], [batch_size, 28, 28, 1], strides=1)

 return output

ew_conv = {
  'ew1': tf.Variable(tf.random_normal([5, 5, 1, 32])),
  'ew2': tf.Variable(tf.random_normal([5, 5, 32, 64]))
}

dw_conv = {
  'dw1': tf.Variable(tf.random_normal([5, 5, 32, 64])),
  'dw2': tf.Variable(tf.random_normal([5, 5, 16, 32])),
  'out': tf.Variable(tf.random_normal([5, 5, 1, 16]))

}

eb_conv = {
  'eb1': tf.Variable(tf.random_normal([32])),
  'eb2': tf.Variable(tf.random_normal([64]))
}
db_conv = {
  'db1': tf.Variable(tf.random_normal([32])),
  'db2': tf.Variable(tf.random_normal([16])),
  'out': tf.Variable(tf.random_normal([1]))
}

現在,こんな感じでエンコーダとデコーダの定義をして、下記の設定で学習させているのですが,
decoderのoutput.shapeが(batch_size, 28, 28, 784)ってなってしまいます。

outputの行列[256, 28, 28, 1]の形でデータを格納したいです。
しかし,出力結果は,[256, 28, 28, 28^2]と最後の配列に全ての値が格納されています

x = tf.placeholder(tf.float32, shape=([None, num_input]))
encode_op = conv_encoder(x, ew_conv, eb_conv)
decode_op = conv_decoder(encode_op, dw_conv, db_conv)

y_pred = decode_op
y_true = x

loss = tf.reduce_mean(tf.pow(y_pred - y_true, 2))
optimizer = tf.train.RMSPropOptimizer(learning_rate).minimize(loss)

init = tf.global_variables_initializer()
with tf.Session() as sess:
  sess.run(init)

  for step in range(1, num_steps+1):
    batch_xs, batch_ys = mnist.train.next_batch(batch_size)

    _, l  = sess.run([optimizer, loss], feed_dict={x:batch_xs})

    if step % display_steps == 0 or step == 1:
      print('Step %i: Minibatch Loss: %f'%(step, l))

ちなみに、エラー理由は下記のようです。mnistのデータが最後のtensorに全て格納されてしまったため、メモリ容量突破したみたいです

 OOM when allocating tensor of shape [256,28,28,784] and type float