[인공지능] 케라스 학습 기술 - 규제화
- 인공지능
- 2022. 2. 17. 21:58
참조
- https://www.youtube.com/watch?v=E3HhuCjyZoA&list=PL7ZVZgsnLwEHGS6EId3B_AnRYSCi_35rj&index=7
- https://ichi.pro/ko/silje-baechi-jeong-gyuhwa-keras-mich-tensorflow-2-0eul-sayonghan-yeje-195627853932911
규제화
- 복잡한 네트워크 일수록 네트워크의 복잡도에 제한을 두어 가중치가 작은 값을 가지도록 함
- 가중치의 분포가 더 균일하게 됨
- 네트워크 손심함수에 큰 가중치에 연관된 비용을 추가
- L1 규제 : 가중치의 절댓값에 비례하는 비용이 추가
- L2 규제 : 가중치의 제곱에 비례하는 비용이 추가(흔히 가중치 감쇠라고도 불림)
- 위 2 규제가 합쳐진 경우도 존재
from tensorflow.keras.regularizers import l1, l2, l1_l2
from tensorflow.keras.layers import Dense
from tensorflow.keras.models import Sequential
from tensorflow.keras.datasets import imdb
import numpy as np
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)
def vectorize_seq(seqs, dim=10000):
results = np.zeros((len(seqs), dim))
for i, seq in enumerate(seqs):
results[i, seq] = 1.
return results
x_train = vectorize_seq(train_data)
x_test = vectorize_seq(test_data)
y_train = np.asarray(train_labels).astype('float32')
y_test = np.asarray(test_labels).astype('float32')
l2_model = Sequential([Dense(16, kernel_regularizer=l2(0.001), activation='relu', input_shape=(10000,)),
Dense(16, kernel_regularizer=l2(0.001), activation='relu'),
Dense(1, activation='sigmoid')])
l2_model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['acc'])
l2_model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 16) 160016
dense_1 (Dense) (None, 16) 272
dense_2 (Dense) (None, 1) 17
=================================================================
Total params: 160,305
Trainable params: 160,305
Non-trainable params: 0
_________________________________________________________________
모델 학습
# 모델 학습
l2_model_hist = l2_model.fit(x_train, y_train,
epochs=20,
batch_size=512,
validation_data=(x_test, y_test))
728x90
'인공지능' 카테고리의 다른 글
[인공지능] TensorFlow Could not load library cudnn_cnn_infer64_8.dll. Error code 126 에러 해결 (7) | 2022.02.23 |
---|---|
[인공지능] 케라스 학습 기술 - 배치 정규화 (0) | 2022.02.17 |
[인공지능] 케라스 학습 기술 - 옵티마이저 (0) | 2022.02.17 |
[인공지능] 케라스 학습 기술 - 가중치 초기화 (0) | 2022.02.17 |
[인공지능] 케라스 학습 기술 - 모델의 크기 축소 (0) | 2022.02.17 |
이 글을 공유하기