转换自动编码器


10

我刚刚阅读了Geoff Hinton关于转换自动编码器的论文

Hinton,Krizhevsky和Wang:转换自动编码器。在人工神经网络和机器学习中,2011年。

并且很想玩这样的游戏。但是,看完它后,我无法从论文中获得足够的细节来说明如何实际实现它。

  • 有谁知道输入像素到胶囊之间的映射应该如何工作?
  • 识别单元中到底应该发生什么?
  • 应该如何训练?仅仅是每个连接之间的标准后置支撑件吗?

更好的方法是为此或类似内容链接到一些源代码。


您是否尝试过联系作者?也许他们有一些在线可用的东西。
里卡多·克鲁兹

Answers:


4

我整理了一些示例tensorflow代码来帮助解释(完整的工作代码在本要点中)。此代码从您链接的论文的第2节的第一部分中实现了胶囊网络:

N_REC_UNITS = 10
N_GEN_UNITS = 20
N_CAPSULES = 30

# input placeholders
img_input_flat = tf.placeholder(tf.float32, shape=(None, 784))
d_xy = tf.placeholder(tf.float32, shape=(None, 2))

# translate the image according to d_xy
img_input = tf.reshape(img_input_flat, (-1, 28, 28, 1))
trans_img = image.translate(img_input, d_xy)
flat_img = tf.layers.flatten(trans_img)

capsule_img_list = []

# build several capsules and store the generated output in a list
for i in range(N_CAPSULES):
    # hidden recognition layer
    h_rec = tf.layers.dense(flat_img, N_REC_UNITS, activation=tf.nn.relu)
    # inferred xy values
    xy = tf.layers.dense(h_rec, 2) + d_xy
    # inferred probability of feature
    p = tf.layers.dense(h_rec, 1, activation=tf.nn.sigmoid)
    # hidden generative layer
    h_gen = tf.layers.dense(xy, N_GEN_UNITS, activation=tf.nn.relu)
    # the flattened generated image
    cap_img = p*tf.layers.dense(h_gen, 784, activation=tf.nn.relu)

    capsule_img_list.append(cap_img)

# combine the generated images
gen_img_stack = tf.stack(capsule_img_list, axis=1)
gen_img = tf.reduce_sum(gen_img_stack, axis=1)

有谁知道输入像素到胶囊之间的映射应该如何工作?

这取决于网络结构。对于该论文中的第一个实验(以及上面的代码),每个胶囊都有一个包含整个输入图像的感受野。那是最简单的安排。在这种情况下,它是输入图像和每个胶囊中的第一个隐藏层之间的完全连接层。

替代地,可以像随后的实验中那样,将囊状受体场更像是跨步排列的CNN核。

识别单元中到底应该发生什么?

识别单元是每个胶囊具有的内部表示。每个胶囊使用此内部表示来计算p,出现胶囊特征的概率以及xy推断的翻译值。该文件中的图2进行了检查,以确保网络正在学习xy正确使用(是)。

应该如何训练?仅仅是每个连接之间的标准后置支撑件吗?

具体来说,您应该将其训练为自动编码器,并且使用会在生成的输出和原始输出之间造成相似性的损失。均方误差在这里效果很好。除此之外,是的,您将需要使用backprop传播梯度下降。

loss = tf.losses.mean_squared_error(img_input_flat, gen_img)
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.