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

Tensorflow를 사용하여 Python을 사용하여 컨볼루션 기반을 만드는 방법은 무엇입니까?

<시간/>

합성곱 신경망은 일반적으로 합성곱 계층, 풀링 계층 및 고밀도 계층의 조합으로 구성됩니다.

자세히 알아보기: 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)에 의해 제어됩니다.