+ All Categories
Home > Documents > 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions...

딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions...

Date post: 06-Jul-2020
Category:
Upload: others
View: 2 times
Download: 0 times
Share this document with a friend
28
딥러닝 연습 - Tensorflow 기초 3 Lecture Notes on 인공지능입문, Spring 2018 Made by JeHwan Ryu Biointelligence Laboratory School of Computer Science and Engineering Seoul National Univertisy http://bi.snu.ac.kr
Transcript
Page 1: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

딥러닝연습 - Tensorflow 기초 3

Lecture Notes on 인공지능입문, Spring 2018

Made by JeHwan Ryu

Biointelligence Laboratory

School of Computer Science and Engineering

Seoul National Univertisy

http://bi.snu.ac.kr

Page 2: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

Troubleshooting

공통시도사항 python –m pip install --upgrade pip

Tensorboard가작동을안하는경우

1. python –m pip install tensorboar

2. python –m pip show tensorboard (or python –m pip show tensorflow)

3. 그 location으로이동

4. cd tensorboard

5. python main.py --logdir=/path/to/log_file/

Imshow에서 blank canvas만뜨는경우 plt.show() 를추가

다른이미지로시도

이미지를어레이로바꿔서시도(img = np.asarray(img))

Jupyter 환경외에서 Matplotlib이잘안되는경우 python –m pip install matplotlib (or python –m pip install --upgrade matplotlib)

Plt.show() 를추가

Pillow 에러가나는경우

python –m pip install pillow (or python –m pip install --upgrade pillow)

2

Page 3: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

Multi-Layer Perceptron 구현

3

Page 4: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

Multi-Layer Perceptron

정의 입력층과출력층사이에하나이상의중간층(은닉층, hidden layer)이존재하는신경망

각층내의연결, 출력층에서입력층으로의직접적연결은존재하지않는전방향(feedforward) 네트워크

특성 퍼셉트론(Perceptron)의다층화

인간의뉴런구조모방

딥러닝모델의근간

4

Page 5: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

데이터넣기

MNIST 데이터다운받기 https://www.dropbox.com/s/457cvbwbhd82uab/mnist.hdf5?dl=0

.ipynb(노트북파일)이있는폴더/data 에저장권장

혹은원하는다른폴더

노트북파일위치찾기 터미널(cmd)에서 jupyter notebook 커맨드를실행시키면해당폴더가 jupyter gui가처음실행될때해당폴더를기준으로열림

위치를찾지못하겠으면 cmd에서 ctrl+c(정지커맨드)를눌러현재폴더를확인

“./data” 라고경로를표현할때 “./”은현재폴더를의미

5

Page 6: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

MNIST

1990년대말얀리쿤의연구실에서수집하고배포한데이터 Label : 0~9

Image shape : 28x28

# of data : Training 60,000 (6,000 / class) / Test 10,000 (1,000 /

class)

6

Page 7: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

Functions

해당 notebook에포함되어있는함수들 (Tensorflow 자체제공함수가아님)

load_data(dataset)

cifar-10 이나 Mnist 데이터를로드해주는함수

dataset = “cifar”일경우 cifar-10을로드,

그외의경우 Mnist를로드

해당노트북(혹은 python 메인파일)이있는폴더밑의 data에 hdf5

파일이존재해야함

load_cifar(file_name), load_mnist(file_name)

load_data(dataset)의하위함수로, 실제적으로각데이터셋을불러오는일을함

7

Page 8: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

8

Page 9: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

Functions

dense_to_one_hot(labels_dense, num_classes=10)

labels_dense 텐서를받아서 one hot 텐서를반환해주는함수

num_classes는클래스개수이며, 별도의입력이없으면기본적으로 10이배정

tf.one_hot(indices, depth)

주어진 indices의 one hot tensor를 return 해주는함수

Indices : one hot으로변환할값 (현재는 class label)

Depth : one hot의깊이 (현재는 class의개수)

load_batch(dataset, hf, phase, startIdx, endIdx)

startIdx부터 endIdx까지의 data를하나의 batch로반환해주는함수

dataset = “cifar”일 경우 cifar-10을로드, 그외의경우 Mnist를로드

hf : 로딩된데이터의 hf 객체

phase = “train”, “valid”, “test”가 가능하며각각해당하는유형의데이터를반환

startIdx : 읽어오길원하는데이터범위의시작지점 index

endIdx : 읽어오길원하는데이터범위의끝지점 index

9

Page 10: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

10

Page 11: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

Functions

linear(input_, output_size, scope=None, stddev=0.1, with_w=False)

(Nonlinear 부분은포함되지않은) MLP의은닉층을구성하는연산

input_ : 해당 layer의 input

output_size : 해당 layer에서 output으로나가는 size

scope : 해당 layer에붙이고싶은 scope name,

없으면 scope name은 “Linear”가됨stddev : 해당 layer의 weight 및 bias의초기값 standard deviation

with_w : weight 및 bias 텐서를 return 할지의여부. 기본값은 False

tf.truncated_normal(shape, dtype, stddev) 및tf.random_normal(shape, dtype, stddev) 함수

특정분포에서 random으로값을선택해주는함수

Random_normal : 정규분포,

Truncated_normal : 정규분포에서일부구간을잘라낸분포

shape : 원하는 tensor의행렬수정보 list (ex. [20] or [10, 10])

stddev : 해당분포의 standard deviation

11

Page 12: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

12

Page 13: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

Functions

calc_Acc(hf, phase)

정확도(accuracy)를계산해주는함수

hf : 로딩된데이터의 hf 객체phase = “train”, “valid”, “test”가가능하며각각해당하는유형의데이터를사용하여 accuracy 계산

temp_accuracy에각 batch의 accuracy를적립한후에전체 batch 수로나누어정확도를계산

13

Page 14: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

14

Page 15: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

코드설명

세션생성

InteractiveSession()을사용할경우 default session이현재세션으로자동설정 (eval 함수를사용할때따로session을줄필요가없음)

(optional) GPU를사용할경우위와같이옵션을주지않으면 GPU 메모리를추가로사용불가능!

15

Page 16: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

Preparing

각종 parameter 및변수지정

Batch_size : 하나의 batch에들어가는데이터의수

*Size : 각데이터유형(train, valid, test)의수

n_*_batches : 각데이터유형별 batch의수(batch size가아님)

16

Page 17: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

Preparing

17

Page 18: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

Preparing

18

Placeholder 선언

이미지는 float형태, 레이블은 int32형태인것에주의

dtype은 string으로인자를줄수도, tf.float32등의형태로인자를줄수도있음

Page 19: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

Modeling

19

tf.reshape(tensor, shape)

주어진 tensor를주어진 shape 대로바꿔주는 operation

Shape는차원정보를담고있는 list

tf.nn.relu(features)

주어진 features에 ReLU를적용하는 operation

Page 20: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

Modeling

tf.nn.softmax(logits)

주어진 logits의 softmax를 return하는 operation

Logits : 입력데이터를네트워크를통해전방향진행하여나온결과물

tf.clip_by_value(t, clip_value_min, clip_value_max)

주어진 tensor t에서 clip_value_min 보다작은값을 clip_value_min으로,

clip_value_max 보다큰값을 clip_value_max로바꿔주는 operation

tf.argmax(input, axis=None)

주어진 axis를따라 Input 중가장큰 value의 index를 return하는 operation

Ex.

20

Page 21: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

Modeling

tf.equal(x, y)

x와 y를 element-wise로 비교하여해당위치에같으면 1, 다르면 0이할당된tensor를반환해주는 operation

tf.cast(x, dtype)

주어진 tensor를주어진 dtype으로 변환시켜 reture해주는 operation

21

Page 22: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

Cross-entropy

22

Page 23: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

23

Page 24: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

Learning

몇가지선언된값들

epoch_size : 전체데이터를몇번학습시킬지나타내는숫자

hf : 학습에사용될데이터

complete_start_time : 학습이시작되었을때의시각epoch_start_time : epoch이시작되었을때의시각

avg_second : 각 epoch당걸린시간이저장될변수

accuracy_* : 각데이터유형(train, valid, test)별정확도가저장될변수

time library

시각에관련된함수들을제공해주는라이브러리

time.time()으로현재시각을 return 받을수있음(단위 : second)

24

Page 25: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

Learning

학습순서

한 epoch 당 :

Accuracy 등의변수초기화

한 batch 당 :

해당 data batch 불러오기(load_batch 함수)

Train과 loss operation을 run 하고 train 과정의 cost를저장

해당 batch로 train accuracy를평가

Batch idx 변경

만약일정 step에도달했으면(여기는 10000 step 마다)

Train accuracy와 cost를 display

만약한 epoch이끝났으면

모델저장

Tensorboard summary 저장

각데이터유형에대한 accuracy display

학습 epoch에걸리고있는시간 display

전체학습에걸린시간 display

25

Page 26: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

26

Page 27: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

27

Page 28: 딥러닝연습 - Tensorflow 기초 3 - Seoul National University · 2018-05-24 · Functions dense_to_one_hot(labels_dense, num_classes=10) labels_dense 텐서를받아서one hot

Problem1

해당 learning model의성능을개선시킬수있는방안을한가지이상말하시오

Code를제출할필요없이서술문만제출

28


Recommended