일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 팀프로젝트
- MFC 프로그래밍
- 골빈해커
- 딥러닝 스터디
- c++
- Pytorch Lecture
- object detection
- 딥러닝 공부
- 김성훈 교수님 PyTorch
- C언어 공부
- 파이토치 김성훈 교수님 강의 정리
- pytorch
- c언어 정리
- 딥러닝
- 모두의 딥러닝
- tensorflow 예제
- 해리스 코너 검출
- matlab 영상처리
- 케라스 정리
- 모두의 딥러닝 예제
- TensorFlow
- 파이토치 강의 정리
- 미디언 필터링
- 영상처리
- c언어
- 파이토치
- c++공부
- 컴퓨터 비전
- 가우시안 필터링
- pytorch zero to all
- Today
- Total
ComputerVision Jack
[골빈해커 Chapter8 정리] 본문
[개념 정리]
비지도 학습 AutoEncoder
입력값으로부터 데이터의 특징을 찾아내는 방법
비지도 학습은 X값만 있는 상황에서 학습한다.
(대표적으로 Auto Encoder가 있다.)
오토인코더(AutoEncoder)
입력값과 출력값을 같게 하는 신경망.
가운대 계층의 노드 수가 입력값 보다 적은 것이 특이사항.
따라서 데이터 압축 효과와 잡음제거 효과까지 적용 가능하다.
입력층으로 데이터가 들어오면 인코더를 통해 은닉층으로 보내고, 은닉층 데이터를 디코더를 통해 출력층으로 보낸 뒤,
출력과 입력이 비슷해지도록 가중치를 찾아내는 것.
- 오토 인코더(Variational AutoEncoder)
- 잡음 제거 인코더(Denoising AutoEncoder)
[코드 정리]
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("./mnist/data/", one_hot = True)
#tensorflow에 있는 mnist자료를 다운받는다.
Hyper parameter 정리
learning_rate = 0.01
training_epoch = 20
batch_size = 100
n_hidden = 256
n_input = 28 * 28
X = tf.placeholder(tf.float32, [None, n_input])
#비지도 학습은 Y값 라벨이 필요가 없다.
인코더 생성
W_encode = tf.Variable(tf.random_normal([n_input, n_hidden]))
b_encode = tf.Variable(tf.random_normal([n_hidden]))
encoder = tf.nn.sigmoid(tf.add(tf.matmul(X, W_encode), b_encode))
#우선 256개의 뉴런을 가진 은닉층 생성.
따라서 입력 784 은닉층 256이기 때문에 [784, 256]의 가중치와 [256] 편향을 설정한다.
마지막으로 sigmoid함수를 통하여 인코더 결과를 도출한다.
input 보다 hidden값이 더 작다는 것에 주목.
디코더 생성
W_decode = tf.Variable(tf.random_normal([n_hidden, n_input]))
b_decode = tf.Variable(tf.random_normal([n_input]))
decoder = tf.nn.sigmoid(tf.add(tf.matmul(encoder, W_decode), b_decode))
#디코더 구성 - 입력값 은닉층 출력값 입력층 크기 만큼 생성.
따라서 최종 모델은 [784 -> 256 -> 784]가 된다.
오토인코더는 출력값을 입력값과 비슷하게 만드는 것.
따라서 실제 값 X와 디코더로 보내지 값의 거리 오차를 구한다.
cost = tf.reduce_mean(tf.pow(X - decoder, 2))
#손실함수
optimizer = tf.train.RMSPropOptimizer(learning_rate).minimize(cost)
#RMSProp optimizer를 사용한다.
total_batch = int(mnist.train.num_examples / batch_size)
for epoch in range(training_epoch):
total_cost = 0
for i in range(total_batch):
batch_xs, batch_ys = mnist.train.next_batch(batch_size)
_,cost_val = sess.run([optimizer, cost], feed_dict = {X: batch_xs})
total_cost += cost_val
print('Epoch : ', '%04d' % (epoch + 1),'Avg. cost : ', '{:.4f}'.format(total_cost / total_batch))
print('---최적화 완료---')
#학습을 시킨다.
maplotlib라이브러리를 사용하여 x_data를 넣었을때 x_data 비슷하게 y를 생성했는지 확인
'DeepLearning > 골빈해커 - Tensor Lib' 카테고리의 다른 글
[골빈해커 Chapter10정리] (0) | 2020.01.21 |
---|---|
[골빈해커 Chapter9정리] (0) | 2020.01.20 |
[골빈해커 Chapter7정리] (0) | 2020.01.17 |
[골빈해커 Chapter6 정리] (0) | 2020.01.16 |
[골빈해커 Chapter5 정리] (0) | 2020.01.15 |