나는 생각한 문서 매우 혼동 될 수 있습니다 내가 상상하는 동작이에 따라 다 Tensorflow 및 Keras 버전입니다. 예를 들어,이 후,사용자가를 설명하는 정확한 동작합니다. 일반적으로, flow_from_directory()
는 방법을 읽을 수 있습에서 직접 이미지를 디렉토리고 확장하는 동안 모델이 훈련되고 이미 언급되었듯이 여기에,그것은 반복하는 모든 샘플에서 각각의 폴더에 모든 시대. 다음 예제를 사용하여 확인할 수 있습니다 이런 경우(에 TF2.7)하여 단계별로 시대에서 진행됩:
import tensorflow as tf
BATCH_SIZE = 64
flowers = tf.keras.utils.get_file(
'flower_photos',
'https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz',
untar=True)
img_gen = tf.keras.preprocessing.image.ImageDataGenerator(
rescale=1./255,
horizontal_flip=True,
)
train_ds = img_gen.flow_from_directory(flowers, batch_size=BATCH_SIZE, shuffle=True, class_mode='sparse')
num_classes = 5
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(16, 3, padding='same', activation='relu', input_shape=(256, 256, 3)),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Conv2D(32, 3, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Conv2D(64, 3, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(num_classes)
])
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True))
epochs=10
history = model.fit(
train_ds,
epochs=epochs
)
Found 3670 images belonging to 5 classes.
Epoch 1/10
6/58 [==>...........................] - ETA: 3:02 - loss: 2.0608
당신 랩 flow_from_directory
가 tf.data.Dataset.from_generator
다음과 같다:
train_ds = tf.data.Dataset.from_generator(
lambda: img_gen.flow_from_directory(flowers, batch_size=BATCH_SIZE, shuffle=True, class_mode='sparse'),
output_types=(tf.float32, tf.float32))
다는 것을 알 수 있 진행 표시줄처럼 보이기 steps_per_epoch
되지 않은 명시적으로 정의:
Epoch 1/10
Found 3670 images belonging to 5 classes.
29/Unknown - 104s 4s/step - loss: 2.0364
면 이 매개 변수를 추가,당신은 단계를 진행됩:
history = model.fit(
train_ds,
steps_per_epoch = len(from_directory),
epochs=epochs
)
Found 3670 images belonging to 5 classes.
Epoch 1/10
3/58 [>.............................] - ETA: 3:19 - loss: 4.1357
마지막으로,당신의 질문:
를 사용하는 방법이 올바르게 발전기와 기능에 맞게 모든
데이터에서 훈련을 설정함을 원래,비-증강현 이미지
증강현 이미지,그리고 사이클 그것을 통해서 여러 번/단계입니까?
당신은 단순히 증가 steps_per_epoch
를 넘어 number of samples // batch_size
을 곱하여 어떤 요인에 의하여:
history = model.fit(
train_ds,
steps_per_epoch = len(from_directory)*2,
epochs=epochs
)
Found 3670 images belonging to 5 classes.
Epoch 1/10
1/116 [..............................] - ETA: 12:11 - loss: 1.5885
지금 대신 58 단계별로 시대를 116.