我正在按照https://www.tensorflow.org/beta/tutorials/generative/dcgan
中的教程进行操作我希望能够看到使用plt.imshow()生成的图像,但是由于某些原因,该行
generator = make_generator_model()
noise = tf.random.normal([1, 100])
generated_image = generator(noise, training=False)
#type = tensorflow.python.framework.ops.Tensor
plt.imshow(generated_image[0, :, :, 0], cmap='gray')
不适用于我,并且出现错误:
TypeError: Image data cannot be converted to float
我在StackOverflow上关注了几个线程,并尝试使用tf.cast转换Tensor,但这仍然无济于事。
网站上的模型与我的代码不同(仅略有不同)
def make_generator_model():
model = Sequential()
model.add(Dense(9*9*256, use_bias=False, input_shape=(100,)))
# model.add(BatchNormalization())
model.add(LeakyReLU())
model.add(Reshape((9, 9, 256)))
assert model.output_shape == (None, 9, 9, 256) # Note: None is the batch size
model.add(Conv2DTranspose(128, (3, 3), strides=(1, 1), padding='same', use_bias=False))
assert model.output_shape == (None, 9, 9, 128)
# model.add(BatchNormalization())
model.add(LeakyReLU())
model.add(Conv2DTranspose(64, (3,3), strides=(1, 1), padding='same', use_bias=False))
assert model.output_shape == (None, 9, 9, 64)
# model.add(BatchNormalization())
model.add(LeakyReLU())
model.add(Conv2DTranspose(1, (3,3), strides=(1, 1), padding='same', use_bias=False, activation='tanh'))
assert model.output_shape == (None, 9,9,1)
return model
答案 0 :(得分:1)
在TensorFlow 1.xx中,您需要evaluate输出张量。
generator = make_generator_model()
noise = tf.random.normal([1, 100])
generated_image = generator(noise, training=False)
sess = tf.Session() #create session
sess.run(tf.global_variables_initializer()) #initialize variables
image = sess.run(generated_image[0, :, :, 0]) #evaluate image tensor inside session
plt.imshow(im, cmap='gray')
plt.show()
或者您可以使用TensorFlow 2.0 beta,默认情况下使用急切执行。
generator = make_generator_model()
noise = tf.random.normal([1, 100])
generated_image = generator(noise, training=False)
plt.imshow(generated_image[0, :, :, 0], cmap='gray')
plt.show()