【问题标题】:How is this generating an image?这是如何生成图像的?
【发布时间】:2019-06-05 04:08:43
【问题描述】:

我在tensorflow official site 中使用 tensorflow 浏览了 GAN 网络。

在这里我遇到了这一点

generator = make_generator_model()

noise = tf.random.normal([1, 100])
generated_image = generator(noise, training=False)

plt.imshow(generated_image[0, :, :, 0], cmap='gray')

make generator_model() 返回一个顺序模型。是的,这很酷。但是生成的图像呢?不是张量值吗?当我们没有运行会话时,我们如何生成图像并检查它们,matplotlib pyplot 函数是如何在张量对象上绘制的?它应该是 numpy,据我所知,pyplot 接受 numpy 数组来绘制图像。不是吗?谁能帮我解决这个问题?

【问题讨论】:

    标签: python python-3.x tensorflow


    【解决方案1】:

    该方法定义为

     def make_generator_model():
         model = tf.keras.Sequential()
         model.add(layers.Dense(4*4*1024, use_bias = False, input_shape = (100,)))
         model.add(layers.BatchNormalization())
         model.add(layers.LeakyReLU())
    

    如您所见,您得到的是tf.keras.Sequential

    密集层

    在 Keras 中,您可以创建层来开发模型。模型通常是层的网络,其中,最常见的类型是层的堆栈

    向模型添加一个密集连接层将作为输入数组的形状 (, 100)。第一层之后的数据形状为(, 4*4*1024)。在这种情况下,由于自动形状推断,您无需指定向前移动的输入大小

    批量标准化的功能类似于网络每一层的预处理。

    ReLU 对于所有正值都是线性的,对于所有负值都设置为零。 Leaky ReLU 对负值的斜率较小,而不是完全为零。

    例如,当 x 时,leaky ReLU 可能有 y = 0.01x

    更多信息https://towardsdatascience.com/developing-a-dcgan-model-in-tensorflow-2-0-396bc1a101b2

    【讨论】:

    • 你没有解释问题伙伴。问题是,它如何在不运行会话的情况下返回张量时生成图像?
    • 是随机噪声,噪声是在make_generator_model方法的内容中产生的。我的回答部分解释了它,其余部分在提供的链接中进行了解释,但不想复制整个博客文章。
    • 真的谢谢你。但我知道我们这样做是随机噪声。但是我们还没有运行会话对吗?当我们在我的 jupyter notebook 中运行代码时,它不会生成图像,因为它说它是张量对象。我该如何解决?
    • 如果您从粘贴的链接中复制粘贴代码并运行它,它应该可以工作
    【解决方案2】:

    本教程使用 TF 2.0,默认情况下采用 eager execution。这意味着操作按照定义运行,类似于例如火炬。因此,您可以以更“自然”的方式(例如 numpy 函数)来考虑控制流。调用 generator 立即返回一个带有值的张量(plt.imshow 转换为一个 numpy 数组),不再有会话。我鼓励您查看 TF 网站上有关 2.0 更改的教程。

    【讨论】:

      猜你喜欢
      • 2022-10-19
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      相关资源
      最近更新 更多