반응형
레이어
- 레이어 : 유용한 연산자 집합
- 머신러닝 모델은 단순한 레이어를 쌓고 조합하여 표현할 수 있다.
- 텐서플로우는 여러 표준 레이어를 제공하기 때문에 처음부터 고유의 프로그램에 최적화된 레이어를 작성하거나 기존 레이어를 조합해 쉽게 모델을 만들 수 있다.
- 텐서플로우는 케라스의 모든 API를 tf.keras에 포함하고 있다. 여기서 얻어낸 케라스 레이어로 모델을 구축하면 된다.
- 대부분의 레이어는 처음 파라미터로 출력차원의 크기 혹은 채널을 가진다.
- 입력 차원의 수는 따로 설정하지 않아도 유추하지만 그래도 모델이 복잡할 경우 입력해주는 것이 좋다.
layer = tf.keras.layers.Dense(10, input_shape=(None, 5))
- 위는 레이어의 한 종류인 완전 연결 레이어이다.
layer.kernel, layer.bias
- kernel 변수와 bias 변수 내에 레이어의 가중치와 편향에 관련된 정보가 존재한다.
사용자 정의 레이어 구현
- 사용자 레이어를 구현하는 간단한 방법은 tf.keras.Layer 클래스를 상속받아 재정의 하는 것이다.
class MyDenseLayer(tf.keras.layers.Layer):
def __init__(self, num_outputs):
super(MyDenseLayer, self).__init__()
self.num_outputs = num_outputs
def build(self, input_shape):
self.kernel = self.add_variable("kernel",
shape=[int(input_shape[-1]),
self.num_outputs])
def call(self, input):
return tf.matmul(input, self.kernel)
- __init__ : 레이어에 필요한 매개변수를 입력고 레이어 클래스의 멤버변수들을 초기화한다.
- build : init에서 초기화하지 못한 남은 멤버변수를 초기화한다.
- call : 정방향 연산의 방식을 정의한다.
- 위 코드는 대표적인 예시일 뿐이며, 얼마든지 형태는 바뀔 수 있다. (멤버변수 추가, 계산방식 변경 등)
- 이렇게 설정된 사용자 레이어는 일반 레이어와 같이 사용할 수 있다.
기존 레이어 구성 모델 제작
- 대부분의 머신러닝 모델은 기존 레이어 조합으로 구성된다.
- ex. 레즈넷(resnet) : 합성곱, 배치 정규화, 쇼트컷 등으로 구성
# 레즈넷(resnet)
my_seq = tf.keras.Sequential([tf.keras.layers.Conv2D(1, (1, 1), input_shape=(None, None, 3)),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Conv2D(2, 1, padding='same'),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Conv2D(3, (1, 1)),
tf.keras.layers.BatchNormalization()])
- Sequential에 각종 레이어를 쌓아 모델을 만든다.
반응형
'🛠 기타 > Data & AI' 카테고리의 다른 글
과적합방지 - Drop out, 배치정규화 (0) | 2020.08.07 |
---|---|
로그 스케일로 분포 그리기 (0) | 2020.08.07 |
문자열 형태소 제거하기 (0) | 2020.08.06 |
문자열 특수문자 제거 (0) | 2020.08.06 |
[scikit-learn 라이브러리] DecisionTreeClassifier (결정트리분류기) (0) | 2020.08.05 |