众所周知,DNN的主要问题是学习时间长。
但有一些方法可以加速学习:
=(x-AVG)/方差
:https://arxiv.org/abs/1502.03167批量标准化通过减少14倍的训练步骤达到相同的精度
使用非饱和激活函数的优点在于两个方面:一是求解所谓的“爆炸/消失梯度”。二是加快收敛速度。
或任何一个:(maxout,ReLU family,tanh)
我们的初始化与标准计算机视觉任务(例如图像分类和目标检测)上当前最先进的无监督或自监督预训练方法相匹配,同时大约快了三个数量级。
或LSUV初始化(图层顺序单位方差):https://arxiv.org/abs/1511.06422
但如果我们使用所有步骤:(1)批量归一化,(2)ReLU,(3)快速权重初始化或LSUV-那么在训练深度神经网络的任何步骤中使用自动编码器/自动关联器有意义吗?
可以将自动编码器视为以智能方式初始化权重的替代方法。因此,您使用自动编码器,而不是您描述的“快速”权重初始化算法。
自动编码器和RBM经常用于预训练深层神经网络。由于高维参数空间,早期的深层神经网络几乎不可能训练。一个简单的随机梯度下降算法收敛速度很慢,通常会陷入一个糟糕的局部最优。该问题的解决方案是使用RBMs(G.Hinton et al.)或自动编码器(Y.Bengio et al.)以无监督的方式对网络进行预训练。
这有两大优势:
在训练RBM或自动编码器之后,您将在预先训练的网络上放置一个输出层,并使用反向传播以有监督的方式训练整个网络。此步骤也称为微调。由于除了输出层之外的所有层都已经过预训练,因此权重不必改变太多,您将很快找到解决方案。
使用自动编码器有意义吗?如果你有很多有标签的训练数据,为什么还要麻烦呢?只需尽可能智能地初始化权重,然后让GPU轰鸣几周。
然而,如果标记的训练数据很少,则收集大量未标记的数据并训练自动编码器。这样,您就可以确保使用所拥有的几个标记示例实现快速收敛和良好的解决方案。
我可以在输入层之后使用批处理规范化层而不规范化我的数据吗?我可以期望得到类似的效果/性能吗? 在keras函数中,它应该是这样的:
我想使用Batchnormalization来规范化批次维度,但keras中的批次维度自然是无维度的。那我该怎么办呢。 keras示例显示,conv2d的轴为-1,这表示通道尺寸。 轴:整数,应规格化的轴(通常是特征轴)。例如,在具有data\u format=“channels\u first”的Conv2D层之后,在BatchNormalization中设置axis=1。
在TensorFlow中执行批量规格化的正确方法是什么?(即,我不想计算连续均值和方差)。我当前的实现基于tf。nn。batch\u normalization(批次规格化),其中x是具有形状的卷积层的输出。[批次大小、宽度、高度、通道数]。我想在通道方面执行批处理规范。 但这种实施的结果非常糟糕。与tensorflow比较。承包商。苗条的batch\u norm显示其票价较低(同样糟糕的培训表现
我已经成功训练了一个超过100000个样本的模型,该模型在训练集和测试集都表现良好。然后,我尝试对一个特定样本(100000个样本中的一个)进行微调,并使用经过训练的权重作为初始化。 但结果有点奇怪,我相信这是由批处理规范化层引起的。具体而言,我的代码可以列出如下: model.load_weights速率=model.evaluate(x, y)打印速率 mymodel是一个自定义函数来生成我的
我在服务器端对JSON进行了编码(使用ESAPI编码器),然后客户机检索bean的字段并进行进一步的处理。 在服务器端 编码的JSON字符串 \x7b\x22name\x22\x3a\x22sameer\x22,\x22company\x22\x3a\x22company\x22,\x22designation\x22\x3a\x22developer\x22\x7d 在客户端
我使用Tensorflow 1.14.0和Keras 2.2.4。以下代码实现了一个简单的神经网络: 20个时代后的最终val\u损失为0.7751。当我取消注释添加批处理规范化层的唯一注释行时,val\u损失变为1.1230。 我的主要问题要复杂得多,但同样的事情也会发生。因为我的激活是线性的,所以我把批处理规范化放在激活之后还是之前并不重要。 问题:为什么批处理规范化帮不上忙?是否有什么可以更