저번 주는 튜터님들께 프로젝트의 방향과 조언을 듣는 튜터링 시간을 가졌는데
이번 주는 강의와 실습으로 이루어졌다.
이번 11주차 내용은
from tensorflow.keras.callbacks import LearningRateScheduler
def my_schedule(epoch, learning_rate=lr):
if epoch < 5:
return lr
else:
return float(lr * tf.math.exp(0.1 * (5- epoch)))
lrschedule = LearningRateScheduler(my_schedule)
model = create_model()
model.fit(x, y, epochs = 20, validation_split = 1/6, callbacks = [lrschedule], batch_size=512)
from tensorflow.keras.callbacks import EarlyStopping
es = EarlyStopping(monitor='val_loss', patience=2)
model = create_model()
history = model.fit(x, y, epochs = 20, validation_split = 1/6,callbacks = [es], batch_size= 512)
(2로 설정 시 , 2연속 val_loss가 증가하면 train 중지)
: Hierarchical Data Format의 약자
: data를 구조적으로 관리해 과학자들이 주로 사용
: 공용 파일이어서 어느 언어로든지 읽을 수 있다.
model.save('my_model.h5')
)
from tensorflow.keras.models import load_model
new_model = load_model('my_model.h5')
)
# json
json_string = model.to_json()
# yaml
yaml_string = model.to_yaml()
()
import json, yaml
# model reconstruction from JSON:
from tensorflow.keras.models import model_from_json
model_json = model_from_json(json_string)
# model reconstruction from YAML:
from tensorflow.keras.models import model_from_yaml
model_yaml = yaml.load(yaml_string, Loader=yaml.FullLoader)
model.save_weights('my_model_weights.h5')
)
)
model.load_weights('my_model_weights.h5')
: 나중에 bias를 초기화해서 다르게 만들 수도 있어서 ( bias 저장은 큰 의미가 없다 )
mini-batch의 평균 ,분산, 표준편차
normalization
스케일 조정 및 분포 조정
문제점
small batch size
RNN의 반복 연결
대안책
weight normalization
layer normalization
instance normalization
groupe normalization
batch renormalization
batch instance normalization
switchabel normalization
spectral normalization
이외...
사전 학습된 모델을 사용해서 학습
이미 학습된 모델이므로 시간을 아낌
훈련하고자 하는 데이터셋이 기존에 훈련된 데이터셋과 유사할수록 더 좋은 효과를 기대
small : Convolution layer 고정, Classifier만 학습
medium : Convolution layer의 일부, Classifier 학습
large : 전체 모델을 새로 학습
LeNet5
AlexNet
VGG16
GoogLeNet ( Inception V3 )
ResNet
......