728x90

IT/AI\ML 77

[python/keras] 간단한 2차원 문제로 WGAN-gp의 기초를 이해하기

※ 일본의 한 블로그 글을 번역한 포스팅입니다. 오역, 의역, 직역이 있을 수 있으며 내용 오류가 있다면 지적 부탁드립니다. WGAN-gp에 대해서 이해하기 위해, WGAN-gp를 간단한 2차원 문제를 적용해 그 결과를 살펴보고자한다. GAN과 WGAN-gp 1. GAN에 대해서 GAN에서는 식별 모델이 판정한 내용을 바탕으로 생성 모델을 학습하는 것으로 생성 데이터의 분포를 실제 데이터와 가깝게 한다. 이것은 Jensen-Shannon divergence이라는 지표를 사용하여 실제 데이터와 생성 데이터의 확률 분포 차를 측정해, 그것을 최소화해나간다는 컨셉에 근거하고 있다. 여기서 Jensen-Shannon divergence에는 기울기(구배) 소실이 일어나기 쉬워서, 모드 붕괴가 발생하는 문제가 발생..

IT/AI\ML 2022.02.25

[python/Tensorflow2.x] Mixed Precision API

Mixed Precision API란? 기존의 뉴럴 네트워크 학습시에 가중치와 활성값으로써 FP32(32bit 부동소수점)가 이용됐다. 그러나 심층 학습의 성공과 뉴럴 네트워크의 사이즈가 커지면서 최근에 뉴럴 네트워크의 학습에 걸리는 계산 비용이 급격하게 증가하게 됐다. 이러한 문제는 제품 발매를 위한 시행착오를 거치는 동안 시간이 너무 많이 걸리는 문제가 생겼다. 문제를 해결하기 위해 심층 학습을 위하 하드웨어를 제공하는 기업(예를 들면 NVDIA)은 계산을 고속화하기 위한 액셀러레이터를 도입하였다. 예를 들어, NVIDIA의 Volta 세대 이후의 GPU는 계산을 고속화하기 위해 Tensor Cores를 제공하고 있다. 그러나, FP16(16bit 부동소수점)을 가중치, 활성값, 기울기에 사용하는데 ..

IT/AI\ML 2022.01.24

[논문] point cloud 와 딥러닝(PointNet 간단 해설)

이번 포스팅에서는 point cloud 데이터관련해서 주류 모델인 PointNet에 대해 알아보고자 한다. 참고로 PointNet은 2017년에 제안된 모델로, 그 이후에 발표된 정밀도가 높은 모델이 다수 제안됐다. 그러한 모델에 관련된 정보를 살펴보고 싶다면 여기를 참고하길 바란다. 그리고 포스팅에서 사용된 이미지는 이 논문에서 인용됐다. 기존의 방법 : 3차원 합성곱 신경망(Convolution neural Network) Volumetric CNN이라는 이름의 모델로 point cloud 를 voxel화하여 한층 한층을 이미지로써 다루며 그 이미지는 합성곱 신경망에 입력되게 된다. 각 voxel은 2개의 숫자로 표현되어, 메쉬로부터 voxel로 변환할 때 voxel 안에 데이터가 있는지 아닌지를 0..

IT/AI\ML 2022.01.21

[python/TensorFlow2.x] TensorFlow의 GradientTape에 대한 간단한 설명

TensorFlow에는 GradientTape이라는 클래스가 있다. 이 클래스는 기울기를 구하기 위한 클래스이다. 정밀도가 좋은 예측 모델을 만들기 위해서는 적당히 선택된 파라미터로 예측과 실제 결과를 비교하여 그 차이가 작아지도록 파라미터를 반복해서 조정한다. 이때, 파라미터를 어느정도 줄이거나 늘려야 좋을지를 결정하는 것이 "기울기"이다. 이번 포스팅에서는 코드를 살펴보며 사용하는 방법에 대해 알아보고자한다. import tensorflow as tf tf.enable_eager_execution() # 계산 그래프를 즉시 실행하는 Eager execution를 사용한다. x = tf.constant(3.0) # TensorFlow에 정수를 작성 with tf.GradientTape() as g: #..

IT/AI\ML 2022.01.15

[python/Tensorflow1.x] 그래프, 세션의 기초와 디버그 방법 그리고 변수의 기초와 재사용 방법

TensorFlow를 처음 시작하기에는 허들이 꽤 높다. 그러한 허들을 극복하기 위해서는 독특한 개념을 이해할 필요가 있다. 그러한 개념을 간단히 살펴보고자 한다. (그러나 후술할 고수준의 API를 사용하면 어느정도 가볍게 작성할 수 있다. 예를 들어 "심층학습을 간단히 시험해보고 싶다"는 목적의 경우 이러한 API를 사용하는 것을 추천한다.) TensorFlow 최초의 허들 TensorFlow의 최초로 맞닥뜨리게 되는 장애물은 아래의 두 가지라고 생각된다. 그래프와 세션 변수를 다루는 방법 이것들은 독자적인 형태로 맨 처음 봤을 때 반드시 당황하게 되는 부분이다. 이번 포스팅에서는 이 두 가지를 중점적으로 살펴보고자한다. 이 두 가지를 파악해두면 "코딩하고 로그를 출력해 디버깅한다"라는 가장 기본적인 ..

IT/AI\ML 2022.01.13

[python/Tensorflow1.x] Tensorflow의 이름공간(NameSpace)와 공유 변수(Sharing Variable)

2015년 11월에 공개된 Tensorflow에는 "이름공간(Name Space)"의 기능이 추가됐다. 이것은 TensorBoard에서 그래프 시각화를 위해 사용되지만 이 기능만 하는 것은 아니다. 이름 공간은 식별자 관리에 매우 도움이 된다. 한편, Python의 변수 스코프는 로컬, 글로벌, 논글로벌 밖에 없기 때문에 TensorFlow의 코어 부분을 c++레벨 수준의 이름 공간을 서포트하기 위해 Google 엔지니어가 개발한 것으로 보인다. Neural Network의 경우 층이 별로 깊지 않은 MLP(Multi-Layer Pereptron)등에서는 이름 관리로 힘들지 않지만, 깊은 CNN이나 RNN에서 볼 수 있는 커다란 모델의 경우에는 가중치 등을 공유할 필요도 있고, 제대로 된 변수 스코프가 ..

IT/AI\ML 2022.01.12

[python] 결정계수 R2와 자유도 조정 결정 계수 R*2

다중회귀 분석의 결과 지표 중 하나는 "결정계수"이다. 1에 가까울수록 좋은 결과가된다. 그러나, 결정계수만으로는 결과를 잘못 이해할 가능성이 있기 때문에, 결정계수에 대해 잘 이해해둬야할 필요가 있다. 먼저 결정계수에 대해 가볍게 살펴보고 가자. 결정계수는 회귀 분석에 의해 도출된 목적 변수의 예측 값이, 실제 목적 변수의 값과 어느정도 일지하는가를 표시하는 지표이다. 회귀분석에는 y=ax+b이라는 식으로 표시할 수 있는 단일 회귀 분석과 설명변수가 여러 개 있는 다중 회귀 분석이 있다. (이번 포스팅에서는 결정계수 계산식에 대해서는 다루지 않고, 자유도 조정 결정 계수에 대한 것을 주로 다룰 것이다) 단일 회귀분석에 있어서 결정계수 단일 회귀 분석에서는 y=ax+b의 형식으로 목적 변수(y)의 값을 ..

IT/AI\ML 2021.11.28

[Tensorflow] Tensorflow Profiler 사용법

딥 러닝의 학습 효율이나 머신의 비용을 고려해봤을 때, 조금이라도 학습 시간을 단축하고 싶을 것이다. 이 때 사용할 수 있는 것이 Tensorflow Profiler이다. 이번 포스팅에서 MNIST 데이터 세트를 이용한 간략한 Tensorflow Profiler의 사용법에 대해서 알아보고자 한다. Tensorflow Profiler이란? Tensorflow Profiler는 TensorFlow의 계산시에, 처리마다 소요시간등 퍼포먼스 정보를 수집해서, TensorBoard상에 가시화해주는 툴이다. Tensorflow v2.2.0이나 Tensorflow 2.3.0에서 기능이 강화되어 보다 상세한 분석이 가능해졌다. Tensorflow Profiler 설치 Tensorflow Profiler을 이용하기 위해..

IT/AI\ML 2021.09.21

[python/tensorflow2.x] Tensorflow2.x버전 작성법(2)

Model클래스의 서브 클래스화 [tf.kera-Subclassing/Imperative API] 이 방법은 전 포스팅의 Functional API와 공통되는 부분이 많다. 구체적으로 먼저 class NeuralNetwork(tf.keras.Model):이라는 코드(NeuralNetwork 클래스)를 추가적으로 작성하면 끝이다. 아래의 코드를 살펴보자. # ### 활성화 함수를 변수(하이퍼 파라미터)로써 정의 ### # 변수(모델 정의시에 필요로하는 수치) activation1 = layers.Activation('tanh' # 활성화 함수(은닉층용): tanh함수(변경 가능) , name='activation1' # 활성화 함수에 이름 붙이기 ) activation2 = layers.Activation..

IT/AI\ML 2021.09.14

[python/tensorflow2.x] Tensorflow2.x버전 작성법(1)

TensorFlow의 세 종류/ 여섯 가지 모델 작성법 세 종류의 API 크게 아래의 세 종류의 API가 존재한다. - Sequential 모델 : 컴팩트하고 간단한 작성법 - Funtional API : 복잡한 모델을 정의할 수 있는 유연한 작성법 - Subclassing 모델 : 난이도가 살짝 높긴하지만, 자유자재로 커스터마이즈할 수 있는 작성법 한편, Sequential 모델과 Funtional API는 "선언형"을 의미하므로 Symbolic API로 불리기도하고, Subclassing 모델은 "명령형"을 의미하므로 Imperative API라고도 불리기도 한다. 선언형이란 모델의 레이어를 선언적으로 정의하는 것(Define-and-Run)을 일컫는 것이며, 명령형이란 순전파의 실행 포워드 패스를 ..

IT/AI\ML 2021.09.11
728x90