围观:实操5种循环神经网络案例结果分享

作者一直想尝试不同类型的循环神经网络(RNN),最近实现了这个梦想。以下是作者尝试的不同的RNN情况列表。

案例a:“香草”式递归神经网络("香草"是一种常见的"常规"或"没有任何花哨的东西"的委婉说法)

案例b:Multi-Stream递归神经网络

案例c:Concatenated 递归神经网络

案例d:Internal Convolutional 卷积递归神经网络

案例e:Lag 2递归神经网络

香草递归神经网络

围观:实操5种循环神经网络案例结果分享

作者希望实施的RNN总共有5个不同的案例。但是,为了完全理解所有的实现方式,最好对"香草"RNN有一定深入的了解。

案例a:香草递归神经网络(结果)

围观:实操5种循环神经网络案例结果分享

红框→3卷积层

橙框→全局平均池化层和SoftMax

绿色圆圈→隐藏单位时间o

蓝色圆圈→输入4个时间戳

黑框→带4个时间戳的递归神经网络

如上所述,基础网络是简单的RNN结合卷积神经网络来进行分类。RNN的时间戳为4,这意味着我们将在每个时间戳都给网络4种不同的输入。要做到这一点,作者将在原始图像上添加一些噪点。

围观:实操5种循环神经网络案例结果分享

蓝线→随着时间的推移的训练成本

橙线→随着时间推移的训练准确性

绿线→随着时间推移的测试成本

红线→随着时间推移的测试准确性

如上所示,我们的基础网络运行良好。现在的问题是其他方法如何执行,它能够比我们的基础网络更好地规范化吗?

案例b:Multi-Stream递归神经网络(想法/结果)

围观:实操5种循环神经网络案例结果分享

红框→3卷积层

橙框→全局平均池化层和SoftMax

绿色圆圈→隐藏单位时间o

蓝色圆圈→卷积输入流

黄色圆圈→完全连接的网络流

黑框→带4个时间戳的递归神经网络

这个RNN背后的想法仅仅是为RNN提供不同的数据表示。在我们的基础网络中,我们有原始图像或者添加了一些噪音的图像。

围观:实操5种循环神经网络案例结果分享

红框→另外四个CNN / FNN图层来"处理"输入

蓝框→在每个不同的时间戳创建输入

如下图所示,我们的RNN通过[batch_size,26,26,1]将宽度和高度减少2用来输入张量大小。作者希望数据的不同表示可以用作正则化。(类似于数据增加)

围观:实操5种循环神经网络案例结果分享

蓝线→随着时间推移的训练成本

橙线→随着时间推移的训练准确性

绿线→随着时间推移的测试成本

红线→随着时间推移的测试准确性

如上所示,网络的表现相当不错,并且在测试图像上的性能比基础网络高出1%。

案例c:Concatenated 递归神经网络(想法/结果)

围观:实操5种循环神经网络案例结果分享

红框→3卷积层

橙框→全局平均池和SoftMax

绿色圆圈→隐藏单位时间o

蓝色圆圈→输入4个时间戳

黑框→带4个时间戳的递归神经网络

黑色弯曲箭头→连接输入每个时间戳

这种方法非常简单,其思想是每次标记不同的特性时都会被提取出来,并且随着时间的推移,网络可能会有具有更多有用的特性。(复发性层)

围观:实操5种循环神经网络案例结果分享

蓝线→随着时间推移的训练成本

橙线→随着时间推移的训练准确性

绿线→随着时间推移的测试成本

红线→随着时间推移的测试准确性

不幸的是,这是一次完全失败的案例。作者猜想这个空的隐藏值对网络的良好运行没有帮助。

案例d:Internal Convolutional 递归神经网络(想法/结果)

围观:实操5种循环神经网络案例结果分享

红框→3卷积层

橙框→全局平均池和SoftMax

绿色圆圈→隐藏单位时间o

蓝色圆圈→输入4个时间戳

黑框→带4个时间戳的递归神经网络

灰色箭头→在传递到下一个时间戳之前执行内部卷积

如上图所示,该网络与我们的基础网络具有完全相同的输入。不过这次我们将在数据的内部表示中执行额外的卷积操作。

围观:实操5种循环神经网络案例结果分享

围观:实操5种循环神经网络案例结果分享

正确的图像→声明3个新的卷积图层

上图(红框)→如果当前内部图层不是无,我们将执行额外的卷积操作。

实际上作者并没有案例背后的理论原因,作者只是想看看它是否适用于LOL。

围观:实操5种循环神经网络案例结果分享

蓝线→随着时间推移的训练成本

橙线→随着时间推移的训练准确性

绿线→随着时间推移的测试成本

红线→随着时间推移的测试准确性

如上图所述,网络在融合方面做得很好,但遗憾的是它无法超越我们的基础网络。

案例e:Lag 2递归神经网络(想法/结果)

围观:实操5种循环神经网络案例结果分享

红框→3卷积层

橙框→全局平均池和SoftMax

绿色圆圈→隐藏单位时间o

蓝色圆圈→输入4个时间戳

黑框→带4个时间戳的递归神经网络

紫色圆圈→隐藏状态滞后2

在传统的RNN设置中,我们只依靠最前面的值来确定当前值。有一段时间,作者认为没有理由将回顾时间(或滞后)限制为1,我们可以将这个想法延伸到滞后3或滞后4等。(为了简单起见,作者选择了滞后2)

围观:实操5种循环神经网络案例结果分享

蓝线→随着时间推移的训练成本

橙线→随着时间推移的训练准确性

绿线→随着时间推移的测试成本

红线→随着时间推移的测试准确性

谢天谢地,这一网络比基础网络做的更好。(但边距非常小),这种类型的网络最适合于时间序列数据。

交互式代码/透明度

围观:实操5种循环神经网络案例结果分享

对于Google Colab,你需要一个Google帐户才能查看代码,并且你无法在Google Colab中运行只读脚本,因此请在游戏环境中制作副本。

案例a的代码:

(https://colab.research.google.com/drive/1d4cKR1VxFsxyXAck1Mk-zQGvlVuWdOEw)

日志:(

https://github.com/JaeDukSeo/Daily-Neural-Network-Practice-2/blob/master/NeuralNetwork/review_RNN/casea/casea.txt)

案例b的代码:

(https://colab.research.google.com/drive/1U4zthQ9CmcwAi_mWrKVuTPqf88R0lxZz)

日志:

(https://github.com/JaeDukSeo/Daily-Neural-Network-Practice-2/blob/master/NeuralNetwork/review_RNN/caseb/caseb.txt)

案例c的代码:

(https://colab.research.google.com/drive/1oYvkITUp4WdfAx_xYw_Otg7dJr2rc2mz)

日志:

(https://github.com/JaeDukSeo/Daily-Neural-Network-Practice-2/blob/master/NeuralNetwork/review_RNN/casec/casec.txt)

案例d的代码:

(https://colab.research.google.com/drive/1cQ48nzeBCGm5shW634TQmi9mYLIzP4JE)

日志:

(https://github.com/JaeDukSeo/Daily-Neural-Network-Practice-2/blob/master/NeuralNetwork/review_RNN/cased/cased.txt)

案例e的代码:

(https://colab.research.google.com/drive/1ahrQMwLMhpqQLjO7AHSL3707JdnMH-VN)

日志:

(https://github.com/JaeDukSeo/Daily-Neural-Network-Practice-2/blob/master/NeuralNetwork/review_RNN/casee/casee.txt)

相关推荐