0
我有一个反向传播模型工作得很好,但我想实施批量训练。势头和(小)批量训练是否兼容?
一批培训(反向传播功能),伪代码之前代码:
forevery(connection in this.connections.in){
// Adjust weight
var deltaWeight = rate * gradient + momentum * connection.previousDeltaWeight;
connection.weight += deltaWeight;
connection.previousDeltaWeight = deltaWeight;
}
// Adjust bias
var deltaBias = rate * this.error.responsibility + momentum * this.previousDeltaBias;
this.bias += deltaBias;
this.previousDeltabias = deltaBias;
而且新的代码是:
forevery(connection in this.connections.in){
// Adjust weight
var deltaWeight = rate * gradient * this.mask + momentum * connection.previousDeltaWeight;
connection.totalDeltaWeight += deltaWeight;
if(update){
connection.weight += connection.totalDeltaWeight;
connection.previousDeltaWeight = connection.totalDeltaWeight;
connection.totalDeltaWeight = 0;
}
}
// Adjust bias
var deltaBias = rate * this.error.responsibility + momentum * this.previousDeltaBias;
this.totalDeltaBias += deltaBias;
if(update){
this.bias += this.totalDeltaBias;
this.previousDeltaBias = this.totalDeltaBias;
this.totalDeltaBias = 0;
}
因此,如果批量大小为4,反传被调用用3X update=false
和第4次与update=true
。批量训练工作正常,但是当我开启动力(=0.9)
时,所有值都开始溢出。可能是什么问题呢?