我是一名神经网络程序员初学者。我看了很多视频,我不太明白如何正确训练网络,我有两个选择,请帮我选择。
有一个条件数组,这是输入数据,矩阵X,这么说吧。
a = np.array([[1, 2, 3],
[2, 3, 5],
[3, 2, 1],
[1, 2, 3],
[2, 3, 5],
[3, 2, 1]])
我应该如何进行培训,两种选择:
从样本中随机抽取一千次(历元)一个元素,并通过网络、反向传播等运行它们,然后在新的尺度上同样的事情就很简单了。这将导致一千次随机传递。
在每个 epoch 中,训练和细化样本中每个元素的权重,依此类推,例如 1000 次。也就是6000张通行证。
选择哪个?
一个epoch是整个训练样本向前和向后经过神经网络各1次。因此,在第一个版本中,这不是纪元数,而只是神经网络使用某些输入数据来回的次数。
第二个选项的训练函数可能是什么样子(伪代码):
第一个选项的训练函数可能是什么样子(伪代码):
如果你想象一下
x
按顺序生成的是什么。也就是说,首先返回第一个元素,然后返回第二个元素,当到达末尾时,再次返回第一个元素,依此类推。那么如果你接受它,那么它将是第二个选项中的N = 1000*размер обучающей выборки
一合一。N
1000
也就是说,第一个选项和第二个选项之间的区别仅在于第一个选项中元素是随机选择的。因为 元素是随机选择的,那么有些元素会被神经网络考虑一次,有些元素会被考虑几次,有些元素可能根本不会被神经网络考虑。在第二个选项中,每个元素将被考虑相同的次数。
PS如果第一个选项很大
N
,那么...... 该函数randint
(参考作者之前的问题)返回具有均匀分布的伪随机数。那么第一个选项与第二个选项的不同之处仅在于元素的考虑顺序是随机的(伪随机)。而如果在第二个选项中我们在随机混合的训练样本上进行训练,那么这些选项可以说几乎是相同的。第一个选项将毫无用处
神经网络的所有“知识”都包含在它的尺度中。因此,如果您采用新的权重,那么您实际上是在训练 1000 个神经网络 1 次,这是没有意义的。
您需要按顺序从训练集中获取元素并训练神经网络 x 次。次数已经由您配置。如果x太大,那么神经网络将被“重新训练”;如果x太小,那么神经网络将无法完成学习。
我还可以补充一点,x 很大程度上取决于网络的大小(神经元数量)。那些。网络越大,需要通过神经网络运行元素的次数就越多。