Набор данных Tensorflow- batch_size и steps_per_epoch

#tensorflow #tensorflow-datasets #training-data #batchsize

#tensorflow #tensorflow-наборы данных #обучение-данные #размер пакета

Вопрос:

введите описание изображения здесь я работаю над проблемой сегментации изображения, где есть конвейер для данных в формате набора данных tensorflow и также использует итератор tensorflow. Теперь я увеличил количество обучающих изображений с 250 изображений до 500 изображений. У меня есть отдельный конвейер для увеличения изображения. Мой вопрос

  1. Будет ли эффект из-за увеличения количества изображений, хотя я использую то же batch_size=16 самое? Я установил значение step_per_epoch равным 240. Как я видел из файлов журнала в Tensorboard для каждой эпохи, сеть вводит только 16 изображений для каждого шага и повторяет один и тот же пакет, и изображения не будут меняться во время выполнения одной эпохи? Значит ли это, что он готовит одну партию только из тех же 16 изображений для всех 240 шагов?

  2. Я хочу, чтобы все количество выборок, которые будут переданы в сеть в каждую эпоху, означало (например, 16 * 30).Все выборки должны подаваться в сеть для каждой эпохи с определенным размером пакета? Как это возможно?

Я прикрепил изображение тензорной доски для обучения. У меня есть 250 шагов, поэтому для каждого шага изображение должно меняться, но это не так? Номер шага меняется очень редко, как и изображения. Почему?

Ответ №1:

Не видя вашего кода, трудно сказать, что происходит. Обычно, если вы устанавливаете размер пакета равным 16, а шаги — 240, то за одну эпоху будет обработано 16 X 240 = 3840 изображений. Если у вас 500 изображений, то вы просматриваете полный набор данных 7 раз плюс дополнительные 340 изображений. В зависимости от того, как вы построили свою линию ввода, это может быть не так. Как правило, вы хотите просматривать свои обучающие данные примерно один раз за эпоху, поэтому я бы установил шаги для каждой эпохи в (500//16) 1 =32. Если вы хотите просмотреть данные РОВНО один раз за эпоху, вы можете использовать приведенный ниже код, чтобы найти размер пакета и шаги за эпоху. Приведенный ниже код полезен для определения размера пакета и шагов для проверки данных, поскольку в этом случае лучше всего просматривать данные проверки ровно один раз за эпоху.

 length=500 # set this to the number of training images
b_max= 50 # maximum batch size you will allow based on memory capacity
batch_size=sorted([int(length/n) for n in range(1,length 1) if length % n ==0 and length/n<=b_max],reverse=True)[0]  
steps=int(length/batch_size)
  

Комментарии:

1. если обработано 3840 изображений, то для меня это нормально. Но когда я проверяю свою тензорную доску, для каждой эпохи обрабатывается только один и тот же набор из 16 изображений. Я имею в виду, что те же 16 изображений обрабатываются для всех 240 шагов. Я знаю, что это случай с tensorflow.dataset, но я хочу передать его по всему моему набору данных для каждой эпохи

2. он должен проходить через все изображения. Нужно посмотреть ваш код

3. Весь конвейер очень огромен, чтобы опубликовать его здесь. Поскольку в наборе данных tensorflow нет прозрачности. Я не вижу его во время обучения. Я видел, как изображения обучаются в tensorboard, и один и тот же набор из 16 изображений не меняется для каждого шага в tensorboard для эпохи.

4. Я прикрепил изображение tensorboard trainingdata только там, где я могу его визуализировать