간단한 파이썬 클래스 NavieDense를 구현하여 2개의 텐서플로 변수 W와 b를 만들고 __call__() 메서드에서 앞서 언급한 변환을 적용해 보겠습니다.
import tensorflow as tf class NaiveDense: def __init__( , , , ): . = = ( , ) ➊ = tf.random.uniform( , =0, =1e-1) . = tf.Variable( ) = (output_size,) ➋ b_initial_value = tf.zeros(b_shape) self.b = tf.Variable(b_initial_value) def __call__(self, inputs): ➌ return self.activation(tf.matmul(inputs, self.W) + self.b) @property def weights(self): ➍ return [self.W, self.b]
➊ 랜덤한 값으로 초기화된 (input_size, output_size) 크기의 행렬 W를 만듭니다.
➋ 0으로 초기화된 (output_size,) 크기의 벡터 b를 만듭니다.
➌ 정방향 패스를 수행합니다.
➍ 층의 가중치를 추출하기 위한 메서드