1

遵循TensorFlow中ML初学者的MNIST,我们学习最基本的SGD,学习率为0.5,批量大小为100和1000步,如下所示

train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)`
...
for i in range(1000):
  batch_xs, batch_ys = mnist.train.next_batch(100)
  sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

在 CNTK 中,直观的等价物

SGD = {
    minibatchSize = 100
    maxEpochs = 1000
    learningRatesPerMB = 0.5
}

看起来它正在做更多的计算,至少它肯定更冗长。

CNTK 中的minibatchepochs的概念与我所看到的不同,它处理学习率的方式也不同。

显示的 TensorFlow 中基本 SGD 的直接等价物(或最接近的可能)是什么?每个概念如何在每个框架之间转换?

4

1 回答 1

1

看起来 TensorFlow 和 CNTK 对小批量有相同的定义:

'Minibatch size' in CNTK means the number of samples processed between model updates

epoch 是 CNTK 与 TensorFlow 中的 step 类似,即在 train op 上运行了多少会话。

maxEpochs: maximum number of epochs to run.

learningRatesPerMB 有点不同:

this will be converted into learningRatesPerSample by dividing the values by the specified 'minibatchSize'

learningRatesPerSample类似于 TensorFlow 的学习率。

CNTK 关于 SGD 的文档:https ://github.com/Microsoft/CNTK/wiki/SGD-Block

于 2016-11-15T19:39:59.353 回答