Part3-14 callbacks - tensorboard 2
expert한 버젼에서 하는방법
1.x버젼 보다 편리해진점 file_writer만 가져오면 준비끝
매 batch마다 기록하면 디테일하게 볼수 있음. but학습속도가 느려짐
loss_object = tf.keras.losses.SparseCategoricalCrossentropy()
optimizer = tf.keras.optimizers.Adam()
train_loss = tf.keras.metrics.Mean(name='train_loss')
train_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name='train_accuracy')
test_loss = tf.keras.metrics.Mean(name='test_loss')
test_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name='test_accuracy')
@tf.function
def train_step(images, labels):
with tf.GradientTape() as tape:
predictions = model(images)
loss = loss_object(labels, predictions) # Loss 계산
gradients = tape.gradient(loss, model.trainable_variables) # 모델의 trainable_variable을 하여금 loss를 통해 기울기를 얻음
optimizer.apply_gradients(zip(gradients, model.trainable_variables)) # 구한 최적화된 값을 variable에 적용
train_loss(loss)
train_accuracy(labels, predictions)
@tf.function
def test_step(images, labels):
predictions = model(images)
t_loss = loss_object(labels, predictions)
test_loss(t_loss)
test_accuracy(labels, predictions)
logdir = os.path.join('logs', datetime.now().strftime("%Y%m%d-%H%M%S"))
file_writer = tf.summary.create_file_writer(logdir)
for epoch in range(num_epochs):
for step, (images, labels) in enumerate(train_dataset):
train_step(images, labels)
#학습이 끝나고 나서 넣어둠
with file_writer.as_default():
tf.summary.image('input_image', images, step=step + (step*epoch))
tf.summary.scalar('train_loss', train_loss.result(), step=step + (step*epoch))
tf.summary.scalar('train_accuracy', train_accuracy.result(), step=step + (step*epoch))
for test_images, test_labels in test_dataset:
test_step(test_images, test_labels)
template = 'Epoch {}, Loss: {}, Accuracy: {}, Test Loss: {}, Test Accuracy: {}'
print (template.format(epoch+1,
train_loss.result(),
train_accuracy.result()*100,
test_loss.result(),
test_accuracy.result()*100))
텐서보드 실행방법
텐서보드 오류로 인해 일단 미작동...
tensorboard
시간대에 어떤 value값이 나왔는지도 알 수 있음
smoothing을 높여서 일반화 시켜서 그래프를 볼수 있음
graph
설계했던 모델을 볼 수 있음
histogram
분포 확인가능
후기
tensorboard오류로 제대로 실습못해봄
뭔가 슥지나간 느낌... 오류 문의답변오면 다시 해봐야겠음
Part3-15 callbaks - learning rate schedule
learning rate이 높으면 학습이 잘안됨
learning rate이 낮으면 로컬미니마에 빠짐
처음에는 높였다가 점점 줄여주는 방법이 필요
#매 에폭마다 scheduler가 별경해줌
import math
def scheduler(epoch):
if epoch <10:
return 0.001
else :
return 0.001 * math.exp(0.1 * (10-epoch))
# 아래와 같은형태로 줄여짐
for epoch in range(10,20):
print(0.001 * math.exp(0.1 * (10-epoch)))
>>> 0.001
0.0009048374180359595
0.0008187307530779819
0.0007408182206817179
0.0006703200460356394
0.0006065306597126335
0.0005488116360940264
0.0004965853037914095
0.0004493289641172216
0.00040656965974059914
#이걸 callback에 넣어주기만 하면됨
#verbose 1이면 lr이 변경될떄 알려줌
learning_rate_scheduler = tf.keras.callbacks.LearningRateScheduler(scheduler,verbose=1)

줄이는 요령?
0.001로 처음 높게 잡아서 해보고 문제가 생기는 epoch을 기준으로 0.1곱해서 변형
텐서보드를 보다보면 언제쯤 줄여야하는지 감이 생길것임
Part3-16 model checkpoint
학습을 이어할수 있도록 모델 저장
2.0 넘어오면서 pd도 같이 저장됨
save_path = 'checkpoints'
# save_best_only 오르는 경우에만 저장
checkpoint = tf.keras.callbacks.ModelCheckpoint(
save_path, monitor='val_accuracy', verbose=1, save_best_only=True, mode='max')
'책&강의 학습 > 올인원 패키지 :딥러닝&인공지능' 카테고리의 다른 글
| [패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 17회차 미션 (0) | 2020.07.15 |
|---|---|
| [패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 16회차 미션 (0) | 2020.07.14 |
| [패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 14회차 미션 (0) | 2020.07.12 |
| [패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 13회차 미션 (0) | 2020.07.11 |
| [패스트캠퍼스 수강 후기] 인공지능강의 100% 환급 챌린지 12회차 미션 (0) | 2020.07.10 |
댓글