SkFlow - 使用分类器和回归器实现Dropout或L2正则化

时间:2016-08-28 11:06:03

标签: tensorflow

是否有任何简单的方法可以使用SkFlow estimators

实现正则化方法

SkFlow中存在example实施辍学,但它没有实施估算工具。

以下是我正在使用的代码:

regressor = skflow.TensorFlowDNNRegressor(
    hidden_units=[
      20,
      30,
      30,
      30,
      20
    ],
    steps=steps,
    learning_rate=0.3,
    batch_size=32)

regressor.fit(X_train, y_train)

如果没有任何简单的方法来实现这些SkFlow估算器的正则化,那么如果有人可以展示,解释或指出一些能给我带来与TensorFlowDNNRegressor基本相同效果的东西,我会很感激,但我可以添加正规化。

1 个答案:

答案 0 :(得分:0)

此解决方案使用新的tf.contrib.learn api,它允许丢失和优化器。

val_monitor = learn.monitors.ValidationMonitor(
  X_validate,
  y_validate,
  every_n_steps=100,
  early_stopping_metric="loss",
  early_stopping_metric_minimize=True,
  early_stopping_rounds=1000)

feature_columns = [contrib.layers.real_valued_column("", dimension=2)]

regressor = learn.DNNRegressor(
  feature_columns=feature_columns,
  hidden_units=[1024, 512, 256],
  model_dir="tmp/network_model",
  config=tf.contrib.learn.RunConfig(save_checkpoints_secs=10),
  optimizer=tf.train.ProximalAdagradOptimizer(
    learning_rate=0.1,
    #l2_regularization_strength=0.0001
  ),
  dropout=0.1)

regressor.fit(X_train, y_train, steps=500000, batch_size=32, monitors=[val_monitor])

我仍然不确定如何使用decaying learning rate

有关validation monitoringapi的更多信息。