GradientTape는 미분을 자동으로 계산합니다. 즉, 미분을 자동 계산해서 동적으로 기울기 값들을 확인할 수 있는 장점이 있습니다. 따라서 tape.gradient(loss, self.trainable_variables)는 손실에 대한 self.trainable_variables의 미분 값을 계산한다는 의미입니다.

    인코더와 디코더를 위한 네트워크(신경망)를 생성합니다.

    코드 13-11 인코더와 디코더 네트워크 생성

    encoder = [
        tf.keras.layers.InputLayer(input_shape=(28,28,1)),
        tf.keras.layers.Conv2D(
            filters=32, kernel_size=3, strides=(2,2), activation="relu"
        ),
        tf.keras.layers.Conv2D(
            filters=64, kernel_size=3, strides=(2,2), activation="relu"
        ),
        tf.keras.layers.Flatten(),
        tf.keras.layers.Dense(units=2*2),
    ] ------ ①
    
    decoder = [
        tf.keras.layers.Dense(units=7 * 7 * 64, activation="relu"),
        tf.keras.layers.Reshape(target_shape=(7,7,64)),
        tf.keras.layers.Conv2DTranspose(
            filters=64, kernel_size=3, strides=(2,2), padding="SAME", activation="relu"
        ),
        tf.keras.layers.Conv2DTranspose(
            filters=32, kernel_size=3, strides=(2,2), padding="SAME", activation="relu"
        ),
        tf.keras.layers.Conv2DTranspose(
            filters=1, kernel_size=3, strides=(1,1), padding="SAME", activation="sigmoid"
        ),
    ] ------ ②
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.