简体   繁体   English

如何将张量转换为numpy数组

[英]How to convert tensor to numpy array

I'm beginner of tensorflow. 我是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. 我想将最终decoded张量转换为numpy数组。我尝试使用.eval()但无法工作。 how can I convert tensor to numpy? 如何将张量转换为numpy?

My input image size is 512*512*1 and data type is raw image format. 我输入的图像尺寸为512 * 512 * 1,数据类型为原始图像格式。

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. 您可以将解码添加到sess.run()返回的张量列表中,如下所示。 decoded_val will by numpy array, and you can reshape it to get the original image shape. encoded_val将由numpy数组组成,您可以对其进行整形以获得原始图像形状。

Alternatively, you can do sess.run() outside of training loop to get the resulting decoded image. 或者,您可以在训练循环之外执行sess.run()以获得最终的解码图像。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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