【发布时间】:2020-08-02 08:33:04
【问题描述】:
n_epochs = 50
t0, t1 = 5, 50 # learning schedule hyperparameters
def learning_schedule(t):
return t0 / (t + t1)
theta = np.random.randn(2,1) # random initialization
for epoch in range(n_epochs):
for i in range(m):
random_index = np.random.randint(m)
xi = X_b[random_index:random_index+1]
yi = y[random_index:random_index+1]
gradients = 2 * xi.T.dot(xi.dot(theta) - yi)
eta = learning_schedule(epoch * m + i)
theta = theta - eta * gradients
按照惯例,我们迭代 m 轮;每一轮称为一个纪元。 Batch Gradient Descent 代码在整个训练集上迭代了 1000 次,而这段代码只在训练集上迭代了 50 次,并达到了很好的解决方案
作者说代码只迭代了训练集 50 次。这怎么可能?
对于每个 epoch,1->50,i 从 1->100 开始,训练数据迭代 50*100=5000 次,这不是这样吗?
【问题讨论】:
标签: python machine-learning gradient-descent