python - 用 Python 绘制张量

标签 python tensorflow matplotlib machine-learning

我正在关注 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 来转换张量,但即使这样也没有帮助。

网站上的模型与我的代码不同(仅略有不同)

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

最佳答案

在 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,其中默认使用 eagerexecution。

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()

关于python - 用 Python 绘制张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56672331/

相关文章:

python - 每次迭代后处理时间越来越长(TensorFlow)

python - Siamese 网络的 Keras 模型不学习并且总是预测相同的输出

python - PyQT 中的弹出式、非模态、内联对话框

python - 如何减少内存使用并加快代码速度

python - 没有名为 'scipy' 的模块

python - 为什么 matplotlib fill_between 只在 PDF 上绘制边缘线?

python - 如何在 Cartopy 投影中绘制圆的半径

python - WTForms/ flask : Dynamic min_entries

python - 如何在 mysql.connector 中使用 float 字段(可接受 null)中的 null

python - 根据数据框中的列创建 6 个条形子图