keras에서 훈련 데이터를 바탕으로 하는 몇 가지 방식 비교(fit와fit_generator)

하나, train_on_batch


model.train_on_batch(batchX, batchY)
train_on_batch 함수는 단일 데이터를 받아들여 역방향 전파를 실행한 다음에 모델 파라미터를 업데이트합니다. 이 데이터의 크기는 임의로 할 수 있습니다. 즉, 명확한 대량 크기를 제공할 필요가 없고 정밀화 제어 훈련 모델에 속합니다. 대부분의 경우 우리는 이렇게 정밀할 필요가 없습니다. 99% 상황에서fit_generator 훈련 방식을 소개하겠습니다.

2. fit


model.fit(x_train, y_train, batch_size=32, epochs=10)
fit 방식은 한 번에 훈련 데이터를 메모리에 불러오고 매번 일괄 처리batch_모델 매개 변수를 업데이트하기 위해 ize 개의 데이터를 사용하면 epochs는 더 이상 소개할 필요가 없습니다.이런 훈련 방식은 훈련 데이터량이 비교적 적은 상황에서만 사용하기에 적합하다.

셋,fit_generator


Python의 생성기를 이용하여 데이터의batch를 하나하나 생성하고 훈련을 진행하며 대량의 메모리를 차지하지 않으며 생성기와 모델은 병행하여 실행하여 효율을 높인다.예를 들어 이 함수는 CPU에서 실시간으로 데이터를 향상시키고 GPU에서 모형 훈련을 할 수 있도록 한다
인터페이스는 다음과 같습니다.

fit_generator(self, generator, steps_per_epoch, epochs=1, verbose=1, callbacks=None, validation_data=None, validation_steps=None, class_weight=None, max_q_size=10, workers=1, pickle_safe=False, initial_epoch=0)
generator: 생성기 함수steps_per_epoch: 정수, 생성기가 steps_로 되돌아오면per_epoch차 데이터는 epoch가 끝나고 다음 epoch를 실행합니다.한 epoch에서 몇 번batch를 실행하는지_size.epochs: 정수, 데이터 교체의 윤수를 제어하고 도착하면 훈련을 끝낸다.
callbacks=None,list,list의 요소는keras입니다.callbacks.Callback 대상, 훈련 과정에서list의 리셋 함수 호출

예:


def generate_arrays_from_file(path):
            while True:
                with open(path) as f:
                    for line in f:
                        # create numpy arrays of input data
                        # and labels, from each line in the file
                        x1, x2, y = process_line(line)
                        yield ({'input_1': x1, 'input_2': x2}, {'output': y})
 
model.fit_generator(generate_arrays_from_file('./my_folder'),
                            steps_per_epoch=10000, epochs=10)
keras.fit_generator () 속성 및 값 가져오기

다음과 같습니다.


fit_generator(self, generator, 
                    steps_per_epoch=None, 
                    epochs=1, 
                    verbose=1, 
                    callbacks=None, 
                    validation_data=None, 
                    validation_steps=None,  
                    class_weight=None,
                    max_queue_size=10,   
                    workers=1, 
                    use_multiprocessing=False, 
                    shuffle=True, 
                    initial_epoch=0)
Pythongenerator를 통해 훈련 모델에 사용할 데이터를 생성합니다.generator는 모델과 병행하여 실행할 수 있다. 예를 들어 CPU를 사용하여 일괄 데이터를 생성하고 GPU에서 모델을 훈련할 수 있다.

매개변수:

generator: 멀티프로세스를 사용할 때 데이터를 직접 복제하는 것을 피하기 위해generator나 Sequence의 실례입니다.steps_per_epoch:generator에서 발생한 절차의 총수(샘플 횟수 총수).통상적으로 데이터 집합의 견본 수량을 대량의 크기로 나누는 것과 같아야 한다.epochs: 정수, 데이터 집합에서 교체된 총수.works: 프로세스 기반 루틴을 사용할 때 시작해야 할 프로세스의 수량입니다.use_multiprocessing: 부울 값.True일 때 프로세스 기반 루틴을 사용합니다.

예:


datagen = ImageDataGenator(...)
model.fit_generator(datagen.flow(x_train, y_train,
                                 batch_size=batch_size),
                    epochs=epochs,
                    validation_data=(x_test, y_test),
                    workers=4)
이상의 개인적인 경험으로 여러분께 참고가 되었으면 좋겠습니다. 또한 많은 응원 부탁드립니다.

좋은 웹페이지 즐겨찾기