【问题标题】:Split a trained neural network to 2 parts and use the latter part将经过训练的神经网络分成两部分并使用后一部分
【发布时间】:2019-03-27 19:32:56
【问题描述】:

我有一个简单的自动编码器 DNN,它有 4 个卷积层,后跟 4 个反卷积层。

import tensorflow.contrib.layers as lays

conv1 = lays.conv2d(inputs, 64, [5, 5], stride=2, padding='SAME')
conv2 = lays.conv2d(conv1, 32, [5, 5], stride=2, padding='SAME')
conv3 = lays.conv2d(conv2, 16, [5, 5], stride=4, padding='SAME')
conv4 = lays.conv2d(conv3, 100, [5, 5], stride=4, padding='SAME')  #shape (None,1,1,100)

dconv1 = lays.conv2d_transpose(conv4, 16, [5, 5], stride=4, padding='SAME')
dconv2 = lays.conv2d_transpose(dconv1, 32, [5, 5], stride=4, padding='SAME')
dconv3 = lays.conv2d_transpose(dconv2, 64, [5, 5], stride=2, padding='SAME')
dconv4 = lays.conv2d_transpose(dconv3, 1, [5, 5], stride=2, padding='SAME', activation_fn=tf.nn.tanh) #shape (64,64,1)

这里的输入是 (64,64) 灰度图像,自动编码器在输出层 (dconv4) 重建相同的输入图像。

请注意,此自动编码器的目标不是进行分割,而是将 (64x64) 图像表示为具有最小损失的 (1,1,100) 形状的唯一张量。

如你所见,conv4张量的形状是(None,1,1,100),这正是我想要的。

经过训练,这个自动编码器可以很好地用于测试图像。

但是,我有兴趣将训练后的 DNN 拆分为卷积和反卷积部分,取反卷积部分,将我自己的 (None,1,1,100) 张量输入到 dconv1 层并观察 dconv4 的输出。

如何将自己的输入输入到神经网络 (conv4) 中间的张量?

【问题讨论】:

    标签: python tensorflow deep-learning autoencoder


    【解决方案1】:

    你可以考虑更换

    dconv1 = lays.conv2d_transpose(conv4, 16, [5, 5], stride=4, padding='SAME')
    

    placeholder_with_default 像这样:

    latent_ph = tf.placeholder_with_default(conv4, [None, 1, 1, 100], name="latent_ph")
    dconv1 = lays.conv2d_transpose(latent_ph, 16, [5, 5], stride=4, padding='SAME')
    

    这样,您将自动使用 conv4,但您可以在需要时通过将 feed dict 传递给 session.run 调用将其切换到其他输入:

    with tf.Session() as sess:
        my_latent = np.random.random((10, 1, 1, 100))
        result = sess.run(dconv4, feed_dict={latent_ph: my_latent})
    

    如果您不想重新训练,则必须从检查点加载权重,并使用占位符将它们分配给新图表。类似的事情已经完成here

    【讨论】:

    • 是的,这就是我要找的。不知道我们可以在神经网络中间输入张量。 tf.placeholder_with_default() 这么酷的功能。编辑了问题。
    猜你喜欢
    • 2015-06-02
    • 2019-02-02
    • 2015-05-22
    • 1970-01-01
    • 2020-05-11
    • 2011-04-07
    • 1970-01-01
    • 2013-08-24
    • 2020-02-03
    相关资源
    最近更新 更多