0

我想使用 SKFLOW 逐步完成 DNNClassifier 的拟合,不幸的是代码如下:

    step_classifier = skflow.DNNClassifier(hidden_units=[10, 20, 10], n_classes=3)
    for _ in range(50):
      step_classifier = step_classifier.partial_fit(X, Y, steps =1 ,batch_size=32)
      score = metrics.accuracy_score(y, step_classifier.predict(x))
      print("Accuracy: %f" % score)

不会产生预期的结果——拟合的每次迭代都提供相同的精度:

   Accuracy: 0.315789
     Accuracy: 0.315789
     Accuracy: 0.315789
     Accuracy: 0.315789
   etc

似乎在此 DNNClassifier 的先前版本中,即 TensorFlowDNNClassifier 有 continue_training 标志会产生所需的效果。这在 DNNClassifier 中不可用。那么如何在 SKFLOW 中正确实施每个 epoch 的逐步训练呢?谢谢

4

1 回答 1

1

我希望这个答案会有所帮助,虽然有点晚了。
行:
step_classifier = step_classifier.partial_fit(X, Y, steps =1 ,batch_size=32)
有作为论据steps = 1。你使用一个外循环多次调用这条线。我怀疑每次调用这条线时,都会创建一个大小为 32 的迭代器小批量,并从第一个示例开始迭代每一步的数据。换句话说,自从你离开steps =1后,我怀疑你只在相同的 32 个第一个训练示例上训练你的决策模型,因为每次调用step_classifier.partial_fit迭代器时都从第一个训练示例开始。尝试替换steps = 1steps = 100例如。

至于时代,我自己正在尝试找到一种方法......现在只需取值 step = Ceiling(dataset size / mini batch size) * desiredEpochs 直到我们找到替代方案

于 2016-09-10T19:18:19.003 回答