【问题标题】:Splitting data in training/validation in Tensorflow CIFAR-10 tutorial在 Tensorflow CIFAR-10 教程中拆分训练/验证中的数据
【发布时间】:2017-12-04 18:49:47
【问题描述】:

我对如何在 CIFAR-10 TensorFlow 教程中实现验证感到困惑。

我正在运行位于 https://github.com/tensorflow/models/tree/master/tutorials/image/cifar10 的 CIFAR-10 模型。

假设我有一堆文件,我既想洗牌,也想拆分为每个训练时期的训练和验证数据(通过时期我指的是整个数据集、训练和验证的一轮)。

也就是说,我会运行训练,训练完成后,我会运行验证,然后,我会重新洗牌数据文件并拆分成新的训练和验证集。

我怀疑这样做的方法可能涉及 _LoggerHook 对象:

class _LoggerHook(tf.train.SessionRunHook):
    """Logs loss and runtime."""

    def begin(self):
        self._step = -1
        self._start_time = time.time()

    def before_run(self, run_context):
        self._step += 1
        return tf.train.SessionRunArgs(loss)  # Asks for loss value.

    def after_run(self, run_context, run_values):
        if self._step % FLAGS.log_frequency == 0:
            current_time = time.time()
            duration = current_time - self._start_time
            self._start_time = current_time

            loss_value = run_values.results
            examples_per_sec = FLAGS.log_frequency * FLAGS.batch_size / duration
            sec_per_batch = float(duration / FLAGS.log_frequency)

            format_str = ('%s: step %d, loss = %.2f (%.1f examples/sec; %.3f '
                              'sec/batch)')
            print(format_str % (datetime.now(), self._step, loss_value,
                                    examples_per_sec, sec_per_batch))

既然这已经在跟踪步骤,但我如何传递正确的文件队列?

任何正确方向的帮助或指示都会很棒。

【问题讨论】:

    标签: python validation tensorflow tensorflow-gpu


    【解决方案1】:

    类似下面的东西应该可以工作:

    tf.split_v(tf.random_shuffle(...
    

    或者试试这个(我最喜欢的)。 model_selection 方法train_test_split 专门用于将您的数据按百分比随机分成训练集和测试集

    X_train, X_test, y_train, y_test = train_test_split(features, labels, test_size=0.33, random_state=42)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-10
      • 1970-01-01
      • 2018-08-31
      • 2020-10-28
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多