如何将张量转换为numpy数组

如何将张量转换为numpy数组

本文介绍了如何将张量转换为numpy数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是tensorflow的初学者.我在帮助下制作了简单的自动编码器.我想将最终的decoded张量转换为numpy数组.我尝试使用.eval(),但无法正常工作.如何将张量转换为numpy?

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?

我输入的图像尺寸为512 * 512 * 1,数据类型为原始图像格式.

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

#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

推荐答案

您可以将已解码的张量添加到sess.run()返回的张量列表中,如下所示. encoded_val将由numpy数组组成,您可以对其进行整形以获得原始图像形状.

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.

或者,您可以在训练循环之外执行sess.run()来获得最终的解码图像.

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

这篇关于如何将张量转换为numpy数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-21 11:54