概述
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!')
最后
以上就是奋斗凉面为你收集整理的把tensor转为numpy_如何将张量转换为numpy数组的全部内容,希望文章能够帮你解决把tensor转为numpy_如何将张量转换为numpy数组所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复