1

我对如何在 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))

由于这已经在跟踪步骤,但我如何提供正确的文件队列?

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

4

1 回答 1

4

像下面这样的东西应该工作:

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)
于 2017-06-30T18:27:18.250 回答