Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Tensorflow와 Python을 사용하여 과적합을 줄이기 위해 증강을 어떻게 사용할 수 있습니까?

<시간/>

추가 훈련 데이터를 추가하여 과적합을 줄이기 위해 증강을 사용할 수 있습니다. 이것은 'RandomFlip' 레이어를 사용하는 순차 모델을 생성하여 수행됩니다.

자세히 알아보기: TensorFlow란 무엇이며 Keras가 TensorFlow와 함께 신경망을 생성하는 방법은 무엇입니까?

모든 레이어에 정확히 하나의 입력 텐서와 하나의 출력 텐서가 있는 일반 레이어 스택으로 작업하는 데 사용되는 순차 모델을 구축하는 데 도움이 되는 Keras Sequential API를 사용할 것입니다.

하나 이상의 레이어를 포함하는 신경망을 컨볼루션 레이어라고 합니다. Convolutional Neural Network를 사용하여 학습 모델을 구축할 수 있습니다.

이미지 분류기는 keras.Sequential 모델을 사용하여 생성되고 데이터는 preprocessing.image_dataset_from_directory를 사용하여 로드됩니다. 데이터는 디스크에서 효율적으로 로드됩니다. 과적합이 식별되고 이를 완화하기 위한 기술이 적용됩니다. 이러한 기술에는 데이터 증대 및 드롭아웃이 포함됩니다. 3700개의 꽃 이미지가 있습니다. 이 데이터셋은 5개의 하위 디렉터리를 포함하며 클래스당 하나의 하위 디렉터리가 있습니다. 그들은:

데이지, 민들레, 장미, 해바라기, 튤립.

Google Colaboratory를 사용하여 아래 코드를 실행하고 있습니다. Google Colab 또는 Colaboratory는 브라우저를 통해 Python 코드를 실행하는 데 도움이 되며 구성이 필요 없고 GPU(그래픽 처리 장치)에 대한 무료 액세스가 필요합니다. Colaboratory는 Jupyter Notebook을 기반으로 구축되었습니다.

훈련 예제의 수가 적으면 모델은 훈련 예제에서 노이즈나 원치 않는 세부 정보를 학습합니다. 이는 새로운 예에서 모델의 성능에 부정적인 영향을 미칩니다.

과적합으로 인해 모델은 새 데이터 세트에서 잘 일반화할 수 없습니다. 과적합을 피할 수 있는 방법은 여러 가지가 있습니다. 과적합을 극복하기 위해 데이터 증강을 사용할 것입니다. 데이터 증강은 실제처럼 보이는 이미지를 생성하는 무작위 변환의 도움으로 기존 예제를 증강하여 추가 훈련 데이터를 생성합니다.

이렇게 하면 모델을 데이터의 더 많은 측면에 노출할 수 있으므로 모델을 더 잘 일반화할 수 있습니다. 다음은 예입니다.

print("Using data augmentation to eliminate overfitting")
data_augmentation = keras.Sequential(
   [
      layers.experimental.preprocessing.RandomFlip("horizontal",input_shape=(img_height,
      img_width,3)),
      layers.experimental.preprocessing.RandomRotation(0.1),
      layers.experimental.preprocessing.RandomZoom(0.1),
   ]
)

코드 크레딧 -https://www.tensorflow.org/tutorials/images/classification

출력

Using data augmentation to eliminate overfitting

설명

  • 데이터 증강은 tf.keras.layers.experimental.preprocessing의 레이어를 사용하여 구현할 수 있습니다.

  • 이러한 레이어는 다른 레이어와 마찬가지로 모델 내부에 포함되며 GPU에서 실행됩니다.

  • 이는 과적합을 제거하거나 줄이기 위해 수행됩니다.