#python #tensorflow #computer-vision #training-data #semantic-segmentation
Вопрос:
Мне нужно обучить NN для решения проблемы семантической сегментации с использованием TF. Набор данных слишком велик, чтобы полностью поместиться в оперативной памяти, поэтому мне нужно загружать изображения пакет за пакетом. Кроме того, поскольку это проблема сегментации, метки являются не категориальными, а двоичными масками самих входных изображений.
У меня есть фрейм данных pandas, содержащий абсолютные пути изображений и масок в двух разных столбцах, X и y. Затем я обучаю их, используя следующий код:
def getImageGenerator(df, col):
return ImageDataGenerator()
.flow_from_dataframe(
df, x_col=col, y_col=None,
target_size=(512, 512), interpolation='lanczos',
color_mode='rgb', class_mode=None,
shuffle=True, seed=1,
batch_size=10
)
with tf.device('/cpu:0'):
x_train, y_train = getImageGenerator(df, 'X'), getImageGenerator(df, 'y')
train = zip(x_train, y_train)
with tf.device('/gpu:0'):
model = get_unet() #valid function that returns my NN
history = model.fit(x=train, epochs=1)
Тренировка начинается, но результат отличается от обычного. У меня нет типичного индикатора выполнения, но результат такой:
654/Неизвестно — 544s 6s/шаг — потеря: 0,4491 — точность: 0,8919
Как вы можете видеть, общее количество шагов неизвестно, несмотря на то, что вы установили размер пакета и длину кадра данных. Более того, само по себе количество шагов не кажется мне логичным. Здесь я только что сделал снимок одного вывода, но обучение все еще продолжалось. Однако длина кадра данных составляет всего около 2 тыс. образцов, что, разделенное на десять (размер пакета), должно дать около 200 шагов, не более.
Я сделал что-то не так?