본문 바로가기

분류 전체보기

How to get reproducible results with Keras? (케라스 재현성 잡는 방법) You can use Tensorflow-Determinism. Check this Link. Line 5 and 6 are important to set reprocibility of Keras. import os import random import numpy as np import tensorflow as tf from tfdeterminism import patch patch() random_seed = 7 os.environ["PYTHONHASHSEED"] = "0" os.environ['TF_DETERMINISTIC_OPS'] = '1' os.environ['TF_CUDNN_DETERMINISTIC'] = '1' np.random.seed(random_seed) random.seed(rando.. 더보기
Generative Adversarial Network (GAN) 설계 시 고려할 부분 GAN은 Generator와 Discriminator가 서로 경쟁하며 학습이 진행되는 network 구조라서 어느 하나의 성능이 낮으면 한 쪽으로 훅 치우치는 경향이 있다. Optimizer와 Learning rate에 따른 성능 차이도 꽤 심하게 나타난다. GAN에서 개인적으로 가장 곤란한 게 성능이 안 나와서 train loss든 train accuracy든 들여다봐도 뭐가 문제인지 해석하기 어렵다는 점이다. 이럴 땐 우선 Discriminator의 복잡도를 올려보자. 더보기
(5) Domain-Adversarial training of Neural Networks (DANN) Keras Code Review Domain Adaptation의 한 부류인 Latent Feature Space Trasnformation에 대한 다섯번째 정리 글이다. 이번 글에서는 Domain-Adversarial training of Neural Networks 논문를 Keras로 직접 구현한 코드 리뷰 시간을 갖고자 한다. 이전에 혼자서 CycleGAN 구현했던 코드를 바탕으로 여러 Github 참고하면서 작업을 진행했다. 먼저 이전 글에서 설명했던 그림을 다시 봐보면서 구현 시 고려해야할 점들을 짚어보자. Inputa Data를 Source와 Target으로 구성하면서 어떻게 Task Classifier는 Source만으로 학습하게 만들지?? 어떻게 하면 Generator가 Domain 특성은 뭉개면서 Task에는 좋은 Fe.. 더보기
(4) Advancing medical Imaging Informatics by Deep Learning-Based Domain Adaptation - Adversarial Training Domain Adaptation의 한 부류인 Latent Feature Space Transformatioon에 대한 네 번째 정리 글이다. 두 번째, 세 번째 글에서는 Divergence minimization에 대해 다뤘었고, 이번 글에서는 Adversarial training에 대해 정리하려고 한다. 논문에서는 Adversarial training에 대해 6 문장 정도만 할당해서 간략하게 언급하고 있는데 그 내용을 정리해보면 아래와 같다. DA를 위해 GAN의 경쟁적 학습 개념을 적용한 방법이다. generator와 discriminator를 경쟁적으로 학습시킨다. discriminator가 input image의 domain이 source인지 target인지를 구분 못하도록 generator를 학.. 더보기
(3) Advancing Medical Imaging Informatics by Deep Learning-Based Domain Adaptation - Maximum Mean Discrepancy 이전 글에서 나는 "다음 글에서는 Maximum Mean Discrepancy 와 Wasserstein distance에 대해 정리하도록 하겠다." 고 당차게 말했지만.. 와 Wasserstein distance라는 게 엄청나게 수학적 개념, 특히 확률에서 출발한 방법이더라. 확률에 대한 감이 어느정도 잡히고 나서야 제대로 이해할 수 있겠다는 생각이 들었다. 그러려면 단시간에는 불가능하니... 우선 Maximum Mean Discrepance (MMD)에 대해서만 정리하고자 한다. Maximum Mean Discrepancy (최대 평균 불일치) MMD도 두 데이터 분포 사이의 차이를 측정하는 방법이고, 그림에 나와있는 수식처럼 차이를 계산한다. 평균하고 빼고 제곱한 결과가 MDD 값이다. 무얼 평균? .. 더보기
티스토리 스킨 square → whatever 로 변경 스킨을 변경했다. 광고도 달고 앞으로 꾸준히 활동을 하려고보니 뭔가 스킨에서 옛날 느낌이 났고, 가독성이 좋은 스킨이라 생각했는데 다른 스킨들에 비해 오히려 떨어지는 걸 느꼈다. (공부하기 전에 책상 먼저 치우는 그런 유형이랄까..) whatever 스킨이 깔끔한게 괜찮은데.. 아쉬운 점들이 꽤 많았다. 사이드바도 없고, 프로필 사진도 못 넣고, 레이아웃도 뭔가 이상하고, 인피드 광고랑 길다란 광고도 달고 싶고, 상단에 광고 2개 '애드핏 애드센스' 순으로 넣고 싶고 등등등.... 그래서 학부 때 잠깐 배웠던 거의 남아있지 않은 html/css 개념을 갖고 이곳 저곳을 참고해가면서 진짜 마구잡이로 여기저기 들쑤셔가며 수정해서 바꿔봤다. 지금까지는 만족한다. 아직 해결하지 못한 문제들이 있긴 한데.. 앞으.. 더보기
나도 블로그에 광고 붙였다..! 회사 일이 바빠서 블로그를 제대로 관리하지 못 했었는데 그래도 평일에 평균적으로 300명이나 되는 분들이 방문해시더라. 도움이 되었다는 댓글도 달리고.. '그래 내가 머리 깨가며 공부한 내용들 정리하면 다른 분들에게 조금이라도 도움이 되겠지' 라는 생각으로 시작했던 과거를 생각하며.. 정신차리고 틈틈히 정리해나가려고 한다. 그러면서 동시에 광고도 붙였다ㅎ 많은 수입이 발생하진 않겠지만 글을 계속 쓰다보면 방문자 수도 올라갈거고... 그러면 수입도 조금씩 오를거고 그러면 연말에 고기 썰러 한 번은 갈 수 있지 않을까....? 싶은 마음에 나도 가독성을 해치지 않는 범위에서 광고를 넣어봐야겠다. 광고 한 번 보고 갈 수 있잖아? 이런 느낌으로ㅎㅎㅎ 지금은 AdFit / AdSense 연동했고, 연동하고서는 .. 더보기
0 ~ 255의 픽셀 값을 왜 0 ~ 1로 rescale하는 걸까? 제목 그대로다. CNN을 사용할 때면 보통 input image를 255로 나눠서 0~1 사이의 값을 갖도록 맞춘다. 왜 그러는 걸까? 정확한 근거를 못 찾아서 어디까지나 내 생각이지만, neural network가 feature scale에 예민한 모델이라 0 ~ 1로 맞춰주는 게 아닐까 싶다. 그리고 스쳐 지나가듯 읽은 사이트에서 255라는 값이 network 학습에 바로 사용하기에는 너무 큰 값이라서 0 ~ 1로 rescaling하는 것이라는 글을 본 기억이 있다. 제대로 된 결론은 못 내렸지만.. 뭐 그냥 그렇다고... 나처럼 궁금해하는 사람이 있을까 해서.. 정확히 알고 계신분 댓글 남겨주시면 감사하겠습니다! 더보기