【问题标题】:Tensorflow slim how to specify batch size during trainingTensorflow slim如何在训练期间指定批量大小
【发布时间】:2017-01-19 22:21:07
【问题描述】:

我正在尝试使用 slim 接口来创建和训练卷积神经网络,但我不知道如何指定训练的批量大小。 在训练期间,我的网络因显卡上的“内存不足”而崩溃。 所以我认为这应该是处理这种情况的一种方法...... 我是否必须分批拆分数据和标签,然后显式循环或 slim.learning.train 处理它? 在我粘贴的代码中,train_data 是我的训练集(numpy 数组)中的所有数据。这里不包括模型定义 我有一个快速的来源,但到目前为止没有运气......

g = tf.Graph()
    with g.as_default():
        # Set up the data loading:
        images = train_data
        labels = tf.contrib.layers.one_hot_encoding(labels=train_labels, num_classes=num_classes)
        # Define the model:
        predictions = model7_2(images, num_classes, is_training=True)

        # Specify the loss function:
        slim.losses.softmax_cross_entropy(predictions, labels)

        total_loss = slim.losses.get_total_loss()
        tf.scalar_summary('losses/total loss', total_loss)

        # Specify the optimization scheme:
        optimizer = tf.train.GradientDescentOptimizer(learning_rate=.001)
        train_tensor = slim.learning.create_train_op(total_loss, optimizer)

        slim.learning.train(train_tensor,
            train_log_dir,
            number_of_steps=1000,
            save_summaries_secs=300,
            save_interval_secs=600)

任何提示建议?

编辑: 我重新阅读了文档......我找到了这个例子

image, label = MyPascalVocDataLoader(...)
images, labels = tf.train.batch([image, label], batch_size=32)

但是根本不清楚如何将图像和标签传递给 tf.train.batch... 因为未指定 MyPascalVocDataLoader 函数... 在我的情况下,我的数据集是从 sqlite 数据库加载的,我有训练数据和标签作为 numpy 数组......仍然很困惑。 当然,我尝试像这样将我的 numpy 数组(转换为常量张量)传递给 tf.train.batch

    image = tf.constant(train_data)
    label = tf.contrib.layers.one_hot_encoding(labels=train_labels, num_classes=num_classes)
    images, labels = tf.train.batch([image, label], batch_size=32)

但似乎不是正确的道路......似乎 train.batch 只需要我的数据集中的一个元素......(如何传递这个?只传递 train_data 对我来说没有意义[ 0] 和 train_labels[0])

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    在这里您可以创建 tfrecords,这是 tensorflow 使用的特殊类型的二进制文件格式。正如您提到的,您拥有训练图像和标签,您可以轻松创建 TFrecords 以进行训练和验证。

    创建 TFrecords 后,您需要做的就是从编码的 TFrecords 中解码图像并将其提供给您的模型输入。在那里你可以选择批量大小和所有。

    【讨论】:

      猜你喜欢
      • 2017-06-10
      • 1970-01-01
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 2021-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多