Tensorflow가 GPU를 지원하는지 알아보자
·
Deep Learning
Tensorflow를 설치해서 사용하다보면 현재 설치된 환경이 GPU를 제대로 지원하는지 아닌지 궁금할 때가 있습니다. 요즘은 설치가 많이 편해지기는 했지만, 리눅스 버전, GPU driver 버전, TF 버전, Cuda 버전 등 모두 맞추기가 쉽지 않았으니까요. TF를 설치를 해도 나도 모르게 CPU 버전으로 돌아가는 경우가 왕왕 있습니다. (GPU Tensroflow는 Docker를 이용하는 것을 추천합니다. Docker를 이용해서 편리하게 GPU Tensorflow를 사용하자) 현재 환경이 GPU를 지원하는지 어떻게 알 수 있을까요? 구글링을 해보면 TF 1.x 시절부터해서 여러가지 방법이 나옵니다. 현재 TF 2.x 기준으로 가장 간략한 방법은 다음 코드를 실행해보는 것입니다. import ten..
Tensorflow Custom Layer
·
Deep Learning
Tensorflow Custom Training에서는 keras의 Model 클래스를 이용해서 Custom Model을 만들고 훈련시키는 법을 알아보았습니다. 이번에는 tf.keras.layers.Layer를 사용해서 Custom Layer를 만드는 법을 알아보겠습니다. Tensorflow Custom Training에서 만들었던 예시를 사용해서 이야기를 이어가보겠습니다. tf.keras.Sequential을 쓰지 않고 직접 Model의 동작을 구성하기 위해서 Custom Model을 사용한다면, Custom Layer는 Model 내에서 특정 Layer의 동작을 직접 구성하기 위해서 사용합니다. 예를 들어 새로운 Dropout 알고리즘을 생각해냈다고 가정해보겠습니다. MyDropout이라는 Layer를..
Tensorflow Callback 사용하기
·
Deep Learning
1. Callback 이란? 모델을 훈련시키는 일은 대체적으로 오랜 시간이 걸립니다. 짧게는 몇분에 끝나기도 하지만 보통은 몇 시간에서 몇 일이 걸리기도 합니다. Tensorflow가 기본적인 Log를 출력해주기는 하지만 훈련이 끝날 때까지 기도하고 있기에는 너무나 불안한 일입니다. 그래서 Tensorflow는 모델을 훈련시키는 동안 어떤 이벤트들이 발생하면 개발자가 원하는 동작을 수행할 수 있는 방법을 제공하고 있습니다. 개발자가 원하는 동작을 Callback이라고 부릅니다. Callback 자체는 새로운 개념은 아닙니다. Event-driven 개발 방식에서 쓰이고요. GUI 개발을 해보신 분들은 익숙하실 겁니다. 기본 방식은 이렇습니다. Tensorflow가 미리 이벤트들을 정의합니다. 이벤트는 개..
Tensorflow Custom Training
·
Deep Learning
Tensorflow를 사용하는 가장 큰 이유는 아마도 편리하게 Deep Learning 모델을 만들고 훈련시킬 수 있다는 점일 것입니다. 특히 2.0부터 Keras가 공식적으로 포함되면서 모델을 만들기가 더 쉬워졌습니다. 물론 그 전에도 Keras를 따로 사용하면 되기는 했지만요. Keras가 대부분의 인기 있는 아키텍처와 유틸리티를 지원하기 때문에 많은 부분을 직접 구현하지 않고, Keras의 구현을 가져다 쓸 수 있죠. 하지만 가끔은 Keras에서 아직 지원하지 않는 모델을 사용하고 싶을 때가 있고, 훈련 과정을 좀 더 세밀하게 제어하고 싶을 때가 있습니다. 이때 Tensorflow의 Custom Training 기능을 사용할 수 있습니다. 오늘은 Keras 패키지 밖의 Tensorflow 기능들도 ..
Docker Image에서 개발 중인 코드를 사용하기
·
Deep Learning
전에 Docker를 이용해서 비교적 간편하게 Tensorflow GPU를 사용하는 법을 공유드렸습니다 (Docker를 이용해서 편리하게 GPU Tensorflow를 사용하자). Docker를 이용하면 Performance에 영향은 거의 없으면서, 환경을 독립적으로 유지할 수 있다는 장점이 있습니다. 이런 점은 배포 시에는 아주 좋지만 개발 시에는 치명적인 문제점이 있는데, 바로 코드를 변경할 때마다 Docker Image를 새로 빌드해야 한다는 점입니다. 간단한 방법을 통해서 이 문제를 해결할 수 있습니다. Docker를 이용해서 편리하게 GPU Tensorflow를 사용하자를 따라서 설정을 했다고 가정하겠습니다. 그럼 아래 명령으로 Docker의 Bash shell으로 진입할 수 있습니다. $ dock..
Pre-trained Word Vector를 Tensorflow에서 사용하기
·
Deep Learning
Tensorflow에서 제공하는 Embedding Layer는 간편하게 사용하기에 좋습니다. 하지만 아무래도 대량의 데이터를 사용해서 별도로 훈련시킨 Word Embedding을 사용하는 것보다는 성능이 떨어집니다. (Tensorflow의 Embedding Layer vs fastText) fastText 같은 Library는 Python 인터페이스를 제공하기 때문에 pre-trained word vector를 Tensorflow에서 사용하기 쉬운 편입니다 (한국어 토큰의 단위는 뭐가 좋을까?). 하지만 이런 인터페이스가 없이 순수하게 단어와 그 단어의 Embedding 데이터만 있다면 어떻게 할까요? 결론부터 말하면 Keras Embedding Layer의 weights를 수동으로 지정해주고, trai..