>source

Keras와의 새로운 작업입니다. 코드는 올바르게 작동하지만 신기원에 표시된 값의 의미를 알고 싶습니다. 다음 코드를 사용하고 있습니다.

46/46 라고하는 곳  그리고 226/277 이 숫자의 의미는 무엇입니까? 100/100 와 같이 정상적으로 나타날 때 2가 나타나는 이유 ?

import sys
import os
from tensorflow.python.keras.preprocessing.image import ImageDataGenerator
from tensorflow.python.keras import optimizers
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dropout, Flatten, Dense, Activation
from tensorflow.python.keras.layers import  Convolution2D, MaxPooling2D
from tensorflow.python.keras import backend as K
K.clear_session()

data_entrenamiento = '/content/DatosEntrenamiento' #images
"""
Parameters
"""
epocas=20
longitud, altura = 28, 28
batch_size = 32
pasos = 1000
validation_steps = 300
filtrosConv1 = 32
filtrosConv2 = 64
tamano_filtro1 = (3, 3)
tamano_filtro2 = (2, 2)
tamano_pool = (2, 2)
clases = 3
lr = 0.0004

##Preparamos nuestras imagenes
generator = ImageDataGenerator(
    rescale=1. / 255,
    shear_range=0.2,
    zoom_range=0.2,
    horizontal_flip=True,
    )
test_datagen = ImageDataGenerator(rescale=1. / 255,validation_split=0.2)
entrenamiento_generador = generator.flow_from_directory(
    data_entrenamiento,
    target_size=(altura, longitud),
    batch_size=batch_size,
    class_mode='categorical',
    subset='training')
validacion_generador = test_datagen.flow_from_directory(
    data_entrenamiento,
    target_size=(altura, longitud),
    batch_size=batch_size,
    class_mode='categorical',
    subset='validation')
cnn = Sequential()
cnn.add(Convolution2D(filtrosConv1, tamano_filtro1, padding ="same", input_shape=(longitud, altura, 3), activation='relu'))
cnn.add(MaxPooling2D(pool_size=tamano_pool))
cnn.add(Convolution2D(filtrosConv2, tamano_filtro2, padding ="same"))
cnn.add(MaxPooling2D(pool_size=tamano_pool))
cnn.add(Flatten())
cnn.add(Dense(256, activation='relu'))
cnn.add(Dropout(0.5))
cnn.add(Dense(clases, activation='softmax'))
cnn.compile(loss='categorical_crossentropy',
            optimizer=optimizers.Adam(lr=lr),
            metrics=['accuracy'])
his = cnn.fit_generator(
    entrenamiento_generador,
    steps_per_epoch=pasos,
    epochs=epocas,
    validation_data=validacion_generador,
    validation_steps=validation_steps)


출력은 다음과 같습니다 :

Found 7230 images belonging to 3 classes.
Found 1446 images belonging to 3 classes.
Epoch 1/20
46/46 [=========] - 1s 21ms/step...
226/226 [======] - 8s 36ms/step...
Epoch 2/20
46/46 [=========] - 1s 21ms/step ...
226/226 [=======] - 8s 35ms/step ...


  • 답변 # 1

    와이즈 비즈

    교육을 위해 7230 개의 이미지가 있으며 이는 32 개 이미지의 226 개 배치를 의미합니다. 그것은 또한

    steps_per_epoch: Total number of steps (batches of samples) to yield from generator before declaring one epoch finished and starting the next epoch. It should typically be equal to the number of unique samples of your dataset divided by the batch size.

    입니다  일반적으로 steps_per_epoch 에 의해 계산됩니다 . 그러나 여기서 당신은 steps_per_epoch = train_generator.n/batch_size 를 선언합니다.  사용 가능한 교육 배치보다 크기 때문에 226이 소요됩니다.

    와이즈 비즈

    여기서, 당신은 steps_per_epoch=pasos (=1000) 를 선언  사용 가능한 유효성 검사 배치보다 높습니다 (1446/32 = 46 배치).

    validation_steps: Total number of steps (batches of samples) to yield from validation_data generator before stopping at the end of every epoch. It should typically be equal to the number of samples of your validation dataset divided by the batch size. Optional for Sequence: if unspecified, will use the len(validation_data) as a number of steps.

    를 사용하지 않으면 , 당신은 훈련 validation_steps=300 만 볼 수 있습니다  모든 시대.

    validation_steps

관련 자료

  • 이전 javascript - 두 개의 객체 배열을 병합하고 새로운 키 및 값을 추가했습니다
  • 다음 postgresql - 하나의 열만 다른 경우 하나의 행만 얻는 방법