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

Python을 사용하여 계층을 구성하는 데 Tensorflow를 어떻게 사용할 수 있습니까?

<시간/>

Tensorflow는 'ResnetIdentityBlock'에서 상속받은 클래스를 정의하여 레이어를 구성하는 데 사용할 수 있습니다. 레이어를 구성하는 데 사용할 수 있는 블록을 정의하는 데 사용됩니다.

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

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

TensorFlow Hub는 사전 훈련된 TensorFlow 모델이 포함된 저장소입니다. TensorFlow를 사용하여 학습 모델을 미세 조정할 수 있습니다. TensorFlow Hub의 모델을 tf.keras와 함께 사용하고 TensorFlow Hub의 이미지 분류 모델을 사용하는 방법을 이해합니다. 이 작업이 완료되면 전이 학습을 수행하여 맞춤형 이미지 클래스에 대한 모델을 미세 조정할 수 있습니다. 이것은 사전 훈련된 분류기 모델을 사용하여 이미지를 찍고 그것이 무엇인지 예측함으로써 수행됩니다. 이것은 훈련 없이도 할 수 있습니다.

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

print("Composing layers")
class ResnetIdentityBlock(tf.keras.Model):
   def __init__(self, kernel_size, filters):
      super(ResnetIdentityBlock, self).__init__(name='')
      filters1, filters2, filters3 = filters
      self.conv2a = tf.keras.layers.Conv2D(filters1, (1, 1))
      self.bn2a = tf.keras.layers.BatchNormalization()
      self.conv2b = tf.keras.layers.Conv2D(filters2, kernel_size, padding='same')
      self.bn2b = tf.keras.layers.BatchNormalization()
      self.conv2c = tf.keras.layers.Conv2D(filters3, (1, 1))
      self.bn2c = tf.keras.layers.BatchNormalization()
   def call(self, input_tensor, training=False):
      x = self.conv2a(input_tensor)
      x = self.bn2a(x, training=training)
      x = tf.nn.relu(x)
      x = self.conv2b(x)
      x = self.bn2b(x, training=training)
      x = tf.nn.relu(x)
      x = self.conv2c(x)
      x = self.bn2c(x, training=training)
      x += input_tensor
      return tf.nn.relu(x)
print("The layer is called")
block = ResnetIdentityBlock(1, [1, 2, 3])
_ = block(tf.zeros([1, 2, 3, 3]))
block.layers
len(block.variables)
block.summary()

코드 크레딧 -https://www.tensorflow.org/tutorials/customization/custom_layers

출력

Composing layers
The layer is called
Model: "resnet_identity_block"
_________________________________________________________________
Layer (type)        Output Shape      Param #
=================================================================
conv2d (Conv2D)       multiple          4
_________________________________________________________________
batch_normalization (BatchNo multiple   4
_________________________________________________________________
conv2d_1 (Conv2D)      multiple        4
_________________________________________________________________
batch_normalization_1 (Batch multiple  8
_________________________________________________________________
conv2d_2 (Conv2D)     multiple         9
_________________________________________________________________
batch_normalization_2 (Batch multiple  12
=================================================================
Total params: 41
Trainable params: 29
Non-trainable params: 12

설명

  • resnet의 모든 잔여 블록은 컨볼루션, 일괄 정규화 및 바로 가기로 구성됩니다.

  • 레이어는 다른 레이어 안에도 중첩될 수 있습니다.

  • Model.fit, Model.evaluate, Model.save와 같은 모델 메소드가 필요할 때 keras.Model에서 상속받을 수 있습니다.

  • 변수 추적에 도움이 되는 keras.layers.Layer 대신 keras.Model이 사용됩니다.

  • keras.Model은 내부 레이어를 추적하므로 레이어를 더 쉽게 검사할 수 있습니다.