前馈 - 神经网络Keras

时间:2016-09-08 13:18:58

标签: neural-network artificial-intelligence feed-forward

对于我在Keras中实现的前馈神经网络的输入,我只是想检查一下我的理解是否正确。

[[ 25.26000023  26.37000084  24.67000008  23.30999947]
[ 26.37000084  24.67000008  23.30999947  21.36000061]
[ 24.67000008  23.30999947  21.36000061  19.77000046]...]

因此,在上面的数据中,它是一个数组中4个输入的时间窗口。我的输入图层是

model.add(Dense(4, input_dim=4, activation='sigmoid')) 

model.fit(trainX, trainY, nb_epoch=10000,verbose=2,batch_size=4)

和batch_size是4,理论上当我调用fit函数时,函数会遍历每个nb_epoch中的所有这些输入吗?并且batch_size需要为4才能使此时间窗口有效吗?

感谢约翰

2 个答案:

答案 0 :(得分:1)

让我用一个例子解释一下:

如果你有32个训练样例并且你用model.fit来调用batch_size,那么神经网络将一次呈现4个例子,但是一个时期仍然被定义为一个完整的通过所有32个例子。因此,在这种情况下,网络将一次通过4个示例,理论上至少会调用前向传递(和后向传递)32/4 = 8次。

batch_size为1的极端情况下,这是普通的随机梯度下降。当您的batch_size大于1时,它会被称为批量渐变下降。

答案 1 :(得分:1)

  

和batch_size是4,理论上当我调用fit函数时,函数会遍历每个nb_epoch中的所有这些输入吗?

是的,每个纪元都是所有训练样本

的迭代
  

并且batch_size是否需要为4以使此时间窗口有效?

不,这些都是完全无关的事情。 批量只是训练数据的一个子集,用于计算成本函数的真实梯度的近似。批量越大 - 越接近真正的渐变(和原始的渐变下降),但训练变慢。接近1你得到 - 它变得越来越随机,嘈杂的近似(并且更接近随机梯度下降)。您匹配batch_size和数据维度的事实只是一个奇怪的巧合,并没有任何意义。

让我把它放在更通用的设置中,你在梯度下降中使用加性损失函数(神经网络通常使用的)与梯度相反

grad_theta 1/N SUM_i=1^N loss(x_i, pred(x_i), y_i|theta) =  
 = 1/N SUM_i=1^N grad_theta loss(x_i, pred(x_i), y_i|theta)

loss相比,predy_i(预测)相比有一些损失函数。

基于批处理的场景(粗略的想法)是你不需要重复所有的例子,而是需要一些严格的子集,比如batch = {(x_1, y_1), (x_5, y_5), (x_89, y_89) ... }并使用形式渐变的近似

1/|batch| SUM_(x_i, y_i) in batch: grad_theta loss(x_i, pred(x_i), y_i|theta)

正如您所看到的,这与x_i所居住的空间无关,因此与数据的维度无关。