일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- twolay
- DenseNet
- VGGNet
- tensorboard
- canon mf416dw
- weight histogram
- 화면확대고정
- restnet
- log파일
- #python gpu
- #cuda
- 듀얼부트
- 치환 기능
- #enviroment variable
- #cudnn
- 학습성공
- Rust설치
- Lagrange Multiplier
- Ubuntu동글
- Git branch 보이기
- 리눅스 비밀번호
- Xpad설치
- #ubuntu 14.04(LTS)
- stepsize
- ubuntu 원격
- Ubuntu 설치
- 전체내용
- 3D convolution
- 포트번호 변경
- Hidden layer output
- Today
- Total
목록Deep Learning Diary (10)
save the world
10주차 - 제주도 휴가100,000번 iteration으로 학습된 weight (W1~W19)와 bias(B1~B19)를 한번 더 학습시키기 위해 vgg3_retrain.py 파일에 구성하였음. saver = tf.train.Saver() saver.restore(sess, tf.train.latest_checkpoint('./vgg3/3')) print("Model restored.") checkpoint로 마지막 weight 와 bias를 받아와서 재학습. - 재학습 시스템 잘 작동함. Cost func. Euclidean, L1 norm으로 변경시켜보기softmax loss가 아닌 Euclidean, L1 norm을 loss func. 으로 사용하여 cost의 변화를 비교해보면 좋을 것 같다. 왜..
잘못 된 Dataset 활용으로 학습이 제대로 되지 않음. - 7주차에 학습이 된다고 했었던 내용들이 모두 무산되었다. 사용하고있던 이미지 데이터셋에 1번이미지부터 2976번까지가 모두 다른 이미지가 아니고 1번부터 300번까지의 이미지가 같은 이미지였다. 결국 301번과 1번이미지가 같은 이미지였음. 그런데 학습용 이미지로 1번부터 1976번까지 사용하고 테스트용으로 1977부터 2976까지 사용했으니... 학습했던 이미지에 대해서 그대로 테스트를 진행하였던 것이다. 7주차에는 random.crop을 사용하지 않고 가운데 패치만 사용했기 때문에 몇번의 iteration만 돌아도 training때 학습한 이미지를 test 할때 볼 수 있었기 때문에 학습이 잘 되는 것처럼 나온 것이다. VGG19 sing..
회의내용 - 이미지의 패치 하나만 넣고 학습을 할 경우 마지막 w는 모두 0이고 b에서 하나의 값만 1이면 원하는 값이 나온다면 위의 결과처럼 수렴이 가능하므로 w 와 b 를 확인해보았으나 마지막 w와 b는 예상과 다르게 값이 있었다. - 교수님께서 Batch Normalization을 빼라고 하셔서 제거하였다. - skip-connection도 시도해 보자고 하셨다. 학습 성공 - onelayer.py 학습이 되지않았던 가장 큰 이유, 실수는 # -*- coding: utf-8 -*- # Typical setup to include TensorFlow. import tensorflow as tf import os import time import matplotlib.pyplot as plt import..
Training & Code check 학습을 몇번 해봤으나 모든 시도에 대해 한, 두번만의 iteration에서 값이 몇개의 값으로 수렴하였다. 픽셀값(label)이 어떤 값이던 간에 모델의 output을 통해 나온 값은 한정된 수의 숫자였다. 이 정도로 학습이 되지 않으니 코드상에 문제가 있는 것 같아 코드를 확인 할 필요가 있다고 생각하여 Input값으로 Latent 이미지를 넣고 Label 값으로 Latent 이미지의 center pixel 값을 넣어주었다. 이렇게 학습을 시킨다면 W와 B 값이 identity 커널로 학습이 되기만 한다면 100%의 정확도를 보이도록 학습이 되어야 한다고 생각하였다. 아래는 트레이닝 과정에서 출력한 값이다. iter: 89610, stepSize=1e-8, mom..
5주차 - 설연휴 Model Output Channel Tensorflow에서 100 x 100 x 1(grey color)의 input 이미지를 통해 학습되는 3 x 3 크기의 첫번째 커널(W1) 채널 수가 10 이면 W1 = [3, 3, 1, 10] 이다. 이 때 두번째 커널(W2)의 채널 수가 20이면 convolution의 결과가 [row, col, 10, 200] 이 되어야하는 것 아닌가 하는 생각이 들었다. 그러나 W2 커널의 채널수가 20 이면 결과 채널수도 20이 되는데 이유는 이 때 컨볼루션이 3D 컨볼루션이기 때문이다. 그림으로 보자면 아래와 같다. 위 그림에서처럼 채널이 10개짜리인 커널이 채널이 10인 input과 컨볼루션 되므로 출력은 하나의 채널이 된다. 그러나 이런 커널을 이용..
Model Output Check 학습모델의 최종결과인 l5를 확인하기위해 l5를 numpy.array로 받았는데 몇번의 iteration 후 모든 픽셀의 값이 0으로 나왔다. 원인을 찾기위해 weight 값 (커널)을 확인하려고 tensorboard를 사용했다(아래문단).Tensorboard: Weight Histogram 텐서보드에서 첫번째 레이어의 weight값이 한번 학습했을 때 아주 크게 변하는 것을 확인하고 이를 장기적인 측면에서 확인하고자 텐서보드를 사용하여 그래프로 보고싶었다. weight값을 텐서보드로 넘기기 위해서 모든 weight값을 저장하기위해 tf.summary.histogram("w1_summ", w1) 명령어를 사용하고 실행하였더니 InvalidArgumentError: Nan..
l5 layer output 네트워크의 마지막 layer인 l5의 출력이 어떻게 되는지 보기위해서 변수 l5를 numpy.ndarray로 나타내기 위해서 아래의 코드로 수정 _, layerOutput = sess.run([train_op, l5], feed_dict={learning_rate: stepSize, p_keep_conv: 0.8, p_keep_hidden: 0.5}) sess.run() 안에서 train_op를 수행하면서 중간에 거쳐가는 l5 ouput도 numpy.array로 볼 수 있도록 한다. (처음엔 이렇게 하면 "train_op" 와 "l5"가 독립적으로 sess.run()이 되는 줄 알았는데 그렇지 않고 한 번의 sess.run() 안에서 나오는 것 임을 알게되었다. 독립적으로 s..
Step Size Step size를 N/2회까지는 alpha로 하고 0.75N까지는 alpha/10로하고 N까지는 alpha/100으로 한다. 이렇게 step size를 유동적으로 만들면 처음에 Stochastic Gradient Descent의 랜덤성으로 인한 효과로 대략적인 수렴구간을 찾게되고 이후 값이 진동하는 것을 막기위해 step size를 줄인다. for j in range(100): for i in range(100): sess.run(train_op, feed_dict={learning_rate: stepSize, p_keep_conv: 0.8, p_keep_hidden: 0.5}) if (i+1)*(j+1) == 10000 / 2: stepSize = 0.1 * stepSize elif..
딥러닝 일기 작성 1일 차이며 Deblurring을 위해 Tensorflow를 사용하게 된 건 한 달이 되었다. 일기를 쓰게된 이유는 다른사람에게 내가 알게 된 것을 알리는 것보다는 딥러닝을 배우는데 있어서 개인적인 기억과 이해를 돕기 위함이다. 작성은 월요일부터 금요일까지를 하나의 글로 만들어 작성 할 것이다.현재까지 진행 된 내용Network 구조 전체적인 네트워크의 구조는 tensorflow-Tutorial-master에 05_Convolutional_net.py를 이용하여 시작했다. end to end 구조를 위해서 blur된 이미지를 인풋으로 넣었을때 deblur 된 이미지가 나오도록 한다. Dataset Deblurring을 위한 Dataset으로는 http://web.cecs.pdx.edu/..
라온피플 강의자료(출처 : http://laonple.blog.me)를 보고 정리하였음.Batch size한번의 epoch을 돌릴 때 Batch size 만큼의 데이터를 랜덤하게 샘플링하여 학습시킨다. 이렇게 하는 이유는 망을 학습 시킬 때 모든 데이터를 한 epoch으로 학습 시키기에는 데이터가 너무 방대하여 시간이 오래걸려 optimization이 힘들기 때문에 매번 랜덤하게 샘플링한 데이터 뭉치들을 이용하여 한번의 epoch에 통과시키는 작업을 여러번 반복하면 데이터 전체를 한번의 epoch으로 학습시키는것과 같은 효과를 낼 수 있으면서 빠르기 때문에 적절한 Batch size 가 필요하다.Stochastic Gradient Descent기울기가 줄어드는 방향으로 이동을 할때 모든 데이터에 대하여 ..