【问题标题】:How to change global_step in tensorflow`s SKCompat如何更改 tensorflow 的 SKCompat 中的 global_step
【发布时间】:2018-02-11 06:41:34
【问题描述】:

我正在使用来自 tensorflow.contrib.learnSKCompat 类对 MNIST 数据进行分类:

import tensorflow as tf
from tensorflow.contrib.learn import SKCompat
from tensorflow.contrib.learn import RunConfig

config = tf.contrib.learn.RunConfig(save_summary_steps=1000
                                    ,log_step_count_steps=1000
                                    ,model_dir = "tmp/TF/")

feature_columns = tf.contrib.learn.infer_real_valued_columns_from_input(X_train)

dnn_clf = SKCompat(tf.contrib.learn.DNNClassifier(hidden_units=[1200,600, 
     300, 150, 75], n_classes=10 ,feature_columns=feature_columns, dropout = .5, 
     config=config))

dnn_clf.fit(x=X_train, y=y_train, batch_size=128, steps=5000)

按预期工作,有个小问题:它每 100 步输出一次 Info 消息,我怀疑这些消息编码在 global_step 变量中:

INFO:tensorflow:Using config: {'_task_type': None, '_task_id': 0, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7f3a663d09b0>, '_master': '', '_num_ps_replicas': 0, '_num_worker_replicas': 0, '_environment': 'local', '_is_chief': True, '_evaluation_master': '', '_tf_config': gpu_options {
  per_process_gpu_memory_fraction: 1.0
}
, '_tf_random_seed': None, '_save_summary_steps': 1000, '_save_checkpoints_secs': 600, '_log_step_count_steps': 1000, '_session_config': None, '_save_checkpoints_steps': None, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_model_dir': 'tmp/TF/'}
WARNING:tensorflow:From /home/sergey/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/estimators/head.py:641: scalar_summary (from tensorflow.python.ops.logging_ops) is deprecated and will be removed after 2016-11-30.
Instructions for updating:
Please switch to tf.summary.scalar. Note that tf.summary.scalar uses the node name instead of the tag. This means that TensorFlow will automatically de-duplicate summary names based on the scope they are created in. Also, passing a tensor or list of tags to a scalar summary op is no longer supported.
WARNING:tensorflow:From /home/sergey/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/estimators/dnn.py:192: get_global_step (from tensorflow.contrib.framework.python.ops.variables) is deprecated and will be removed in a future version.
Instructions for updating:
Please switch to tf.train.get_global_step
WARNING:tensorflow:From /home/sergey/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/layers/python/layers/optimizers.py:161: assert_global_step (from tensorflow.contrib.framework.python.ops.variables) is deprecated and will be removed in a future version.
Instructions for updating:
Please switch to tf.train.assert_global_step
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Saving checkpoints for 1 into tmp/TF/model.ckpt.
INFO:tensorflow:loss = 2.50853, step = 1
INFO:tensorflow:global_step/sec: 60.7314
INFO:tensorflow:loss = 1.46667, step = 101 (1.648 sec)
INFO:tensorflow:global_step/sec: 53.2696
INFO:tensorflow:loss = 1.00616, step = 201 (1.877 sec)
INFO:tensorflow:global_step/sec: 57.6543
INFO:tensorflow:loss = 0.625174, step = 301 (1.734 sec)
INFO:tensorflow:global_step/sec: 53.0346
INFO:tensorflow:loss = 0.692355, step = 401 (1.885 sec)
...

问题:

有没有办法将信息输出减少到每 1'000 步?

下载数据*:

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("/tmp/data/")
X_train = mnist.train.images
X_test = mnist.test.images
y_train = mnist.train.labels.astype("int")
y_test = mnist.test.labels.astype("int")

*来源:使用 Scikit-learn 和 Tensorflow 进行动手机器学习

【问题讨论】:

    标签: python tensorflow scikit-learn


    【解决方案1】:

    您可以使用RunConfig 设置运行配置。为您的案例设置log_step_count_steps=1000

    config = tf.contrib.learn.RunConfig(master=None, num_cores=0,
        log_device_placement=False,
        gpu_memory_fraction=1,
        tf_random_seed=None,
        save_summary_steps=100,
        save_checkpoints_secs=_USE_DEFAULT,
        save_checkpoints_steps=None,
        keep_checkpoint_max=5,
        keep_checkpoint_every_n_hours=10000,
        log_step_count_steps=1000,
        evaluation_master='',
        model_dir=None,
        session_config=None)
    
    dnn_clf = SKCompat(tf.contrib.learn.DNNClassifier(hidden_units=[1200,600, 
         300, 150, 75], n_classes=10 ,feature_columns=feature_columns, dropout = .5, 
         config=config))
    

    【讨论】:

    • 我已经尝试过了,但无济于事(((。RunConfig本身并没有触及global_step。它必须在更深的地方......以防万一,我添加了代码下载数据。
    • global_step 跟踪迭代。你可以通过改变步数来改变它;这实际上不是你想要的。这些日志显示的另一个原因是`save_summary_steps=100,`
    • 好吧,让我换种说法:我在将问题发布给 SO 之前尝试了您的建议,但它不起作用。
    猜你喜欢
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-13
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    相关资源
    最近更新 更多