简体   繁体   中英

How to convert tensor to numpy array

I'm beginner of tensorflow. I made simple autoencoder with the help. I want to convert final decoded tensor to numpy array.I tried using .eval() but I could not work it. how can I convert tensor to numpy?

My input image size is 512*512*1 and data type is raw image format.

code

#input
image_size = 512
hidden = 256
input_image = np.fromfile('PATH',np.float32)

# Variables
x_placeholder = tf.placeholder("float", (image_size*image_size))

x = tf.reshape(x_placeholder, [image_size * image_size, 1])
w_enc = tf.Variable(tf.random_normal([hidden, image_size * image_size], mean=0.0, stddev=0.05))
w_dec = tf.Variable(tf.random_normal([image_size * image_size, hidden], mean=0.0, stddev=0.05))
b_enc = tf.Variable(tf.zeros([hidden, 1]))
b_dec = tf.Variable(tf.zeros([image_size * image_size, 1]))

#model
encoded = tf.sigmoid(tf.matmul(w_enc, x) + b_enc)
decoded = tf.sigmoid(tf.matmul(w_dec,encoded) + b_dec)

# Cost Function
cross_entropy = -1. * x * tf.log(decoded) - (1. - x) * tf.log(1. - decoded)
loss = tf.reduce_mean(cross_entropy)
train_step = tf.train.AdagradOptimizer(0.1).minimize(loss)

# Train
init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    print('Training...')
    for _ in xrange(10):
        loss_val, _ = sess.run([loss, train_step], feed_dict = {x_placeholder: input_image})
        print loss_val

You can add decoded to the list of tensors to be returned by sess.run(), as follows. decoded_val will by numpy array, and you can reshape it to get the original image shape.

Alternatively, you can do sess.run() outside of training loop to get the resulting decoded image.

import tensorflow as tf
import numpy as np

tf.reset_default_graph()

#load_image
image_size = 16
k = 64
temp = np.zeros((image_size, image_size))


# Variables
x_placeholder = tf.placeholder("float", (image_size, image_size))

x = tf.reshape(x_placeholder, [image_size * image_size, 1])
w_enc = tf.Variable(tf.random_normal([k, image_size * image_size], mean=0.0, stddev=0.05))
w_dec = tf.Variable(tf.random_normal([image_size * image_size, k], mean=0.0, stddev=0.05))
b_enc = tf.Variable(tf.zeros([k, 1]))
b_dec = tf.Variable(tf.zeros([image_size * image_size, 1]))

#model
encoded = tf.sigmoid(tf.matmul(w_enc, x) + b_enc)
decoded = tf.sigmoid(tf.matmul(w_dec,encoded) + b_dec)


# Cost Function
cross_entropy = -1. * x * tf.log(decoded) - (1. - x) * tf.log(1. - decoded)
loss = tf.reduce_mean(cross_entropy)
train_step = tf.train.AdagradOptimizer(0.1).minimize(loss)

# Train
init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    print('Training...')
    for _ in xrange(10):
      loss_val, decoded_val, _ = sess.run([loss, decoded, train_step], feed_dict = {x_placeholder: temp})
      print loss_val
    print('Done!')

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM