【发布时间】: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