합성곱 신경망은 일반적으로 합성곱 계층, 풀링 계층 및 고밀도 계층의 조합으로 구성됩니다.
자세히 알아보기: TensorFlow란 무엇이며 Keras가 TensorFlow와 함께 신경망을 생성하는 방법은 무엇입니까?
컨볼루션 신경망은 이미지 인식과 같은 특정 유형의 문제에 대해 훌륭한 결과를 생성하는 데 사용되었습니다. 'models' 클래스에 있는 'Sequential' 메서드를 사용하여 만들 수 있습니다. 'add' 방법을 사용하여 이 컨볼루션 네트워크에 레이어를 추가할 수 있습니다.
모든 레이어에 정확히 하나의 입력 텐서와 하나의 출력 텐서가 있는 일반 레이어 스택으로 작업하는 데 사용되는 순차 모델을 구축하는 데 도움이 되는 Keras Sequential API를 사용할 것입니다.
Google Colaboratory를 사용하여 아래 코드를 실행하고 있습니다. Google Colab 또는 Colaboratory는 브라우저를 통해 Python 코드를 실행하는 데 도움이 되며 구성이 필요 없고 GPU(그래픽 처리 장치)에 대한 무료 액세스가 필요합니다. Colaboratory는 Jupyter Notebook을 기반으로 구축되었습니다.
print("Creating the convolutional base") model = models.Sequential() model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3))) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) model.add(layers.MaxPooling2D((2, 2))) model.add(layers.Conv2D(64, (3, 3), activation='relu')) print("Description of arhcitecture is") model.summary()
코드 크레딧:https://www.tensorflow.org/tutorials/images/cnn
출력
Creating the convolutional base Description of arhcitecture is Model: "sequential" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= conv2d (Conv2D) (None, 30, 30, 32) 896 _________________________________________________________________ max_pooling2d (MaxPooling2D) (None, 15, 15, 32) 0 _________________________________________________________________ conv2d_1 (Conv2D) (None, 13, 13, 64) 18496 _________________________________________________________________ max_pooling2d_1 (MaxPooling2 (None, 6, 6, 64) 0 _________________________________________________________________ conv2d_2 (Conv2D) (None, 4, 4, 64) 36928 ================================================================= Total params: 56,320 Trainable params: 56,320 Non-trainable params: 0
설명
-
위의 라인은 공통 패턴을 사용하여 컨볼루션 기반을 정의하는 데 도움이 됩니다.
-
이 패턴은 Conv2D 및 MaxPooling2D 레이어의 스택입니다.
-
CNN이 형태(image_height, image_width, color_channels)의 텐서를 취하는 입력을 취합니다.
-
CNN은 CIFAR 이미지의 형식인 shape(32, 32, 3)의 입력을 처리하도록 구성되어 있습니다.
-
이것은 첫 번째 레이어에 input_shape 인수를 전달하여 수행할 수 있습니다.
-
모든 Conv2D 및 MaxPooling2D 레이어의 출력은 모양(높이, 너비, 채널)의 3D 텐서입니다.
-
네트워크가 깊어질수록 너비와 높이 치수가 줄어듭니다.
-
모든 Conv2D 레이어의 출력 채널 수는 첫 번째 인수(예:32 또는 64)에 의해 제어됩니다.