SlideShare uma empresa Scribd logo
1 de 44
Baixar para ler offline
[Lab1] Basic Tensorflow
Prepared by Gyeong-hoon Lee
Data Mining Lab. 503
E-mail : ghlee0304@cnu.ac.kr
1) prompt창에 다음을 입력합니다.
pip3 install –-upgrade tensorflow
2) tensorflow windows의 경우 C++ 2015 재배포 패키지가 필요합니다.
아래 오른쪽 마우스 클릭 후 하이퍼 링크 열기
▷ https://www.microsoft.com/en-us/download/details.aspx?id=53587
▷
How to Install Tensorflow (1)
3) 다운로드 후 파일을 설치
How to Install Tensorflow (2)
체크 후 다음 클릭
다운로드된 파일 설치
How to Install Tensorflow (3)
4) 설치가 완료되었습니다. 이를 확인하기 위해서 다음과 같이 진행합니다.
C:> python
>>> import tensorflow as tf
>>> tf.__version__
‘1.2.1’
>>> a = tf.constant(1)
>>> b = tf.constant(2)
>>> c = tf.add(a, b)
>>> sess = tf.Session()
>>> print(sess.run(c))
3
<cmd 실행화면 >
<idle 실행 화면>
Python Libraries for numerical computation in tensorflow
- numpy : 배열을 이용하여 수치 계산을 더욱 빠르게 하기 위하여 사용하는 라이브러리
[tutorial site] https://docs.scipy.org/doc/numpy-dev/user/quickstart.html
>>> pip3 install numpy
- pandas : 테이블, 시리즈 등의 자료형을 이용하여 데이터를 쉽게 다루기 위한 라이브러리
[tutorial site] http://pandas.pydata.org/pandas-docs/stable/10min.html
>>> pip3 install pandas
- matplotlib : 데이터의 분포나 추세 등을 그래프를 통하여 확인할 때 사용하는 라이브러리
[tutorial site] https://matplotlib.org/users/pyplot_tutorial.html
>>> pip3 install matplotlib
Other libraries
Tensorflow 자료구조 : Constant
Constant
 이 함수는 스칼라 값을 텐서 객체로 자동으로 변경해준다.
 우리가 생성하는 노드에 식별자를 부여하기 위해서 문자열인 name 파라미터를 적을 수 있다.
1) placeholder
사용자로부터 다양한 입력 값을 받기 위하여 자리(place)를 지니고(hold) 있는 노드
따라서 생성시 값을 가지지 않음
2) feed_dict (feed dictionary)
- 그래프에서 placeholder 노드에 값을 입력할 때 사용되며, 그 값들은 숫자, 문자열, 리스트, numpy 배열이
될 수 있다
- 파이썬에서 사전(dictionary)은 {key :value} 쌍을 가지는 자료형
Tensorflow 자료구조 : PlaceHolder
input값의 자료형 “int” or “float” 등등
input의 모양 tensor shape
node의 이름
(필수)
(선택)
(선택)
Tensorflow 자료구조 : PlaceHolder - Example
3) placeholder shape
예) shape = [] : 0차 텐서, 스칼라 - shape = [3] : 1차 텐서 - shape = [1,3] : 2차 텐서
* 텐서 모양(shape)이 같아야 서로 연산이 가능하다.
4) placeholder에 feed_dict로 값 전달
- sess.run(대상, feed_dict={플레이스홀더 : 입력 값})
1. 인터넷 강의 “Lab01:Tensorflow의 기본” 슬라이드에서
in [ ]…. 으로 표시된 블록들을 차례대로 추가해가면서 실행해보고 실행 결과 화면을
캡쳐해서 보고서에 정리한다.
제출과제-1 (10월 11일까지 제출)
제출과제-2 (10월 11일까지 제출)
2. 다음의 그래프대로 구현하는 코드를 작성하고
- a와 b를 tf.constant 5와 3으로 구현
- a와 b를 tf.placeholder를 이용하여 구현하고 (a,b)=(1,2), (3,4), (5,6),(7,8), (9,10)일 때 한꺼번에 실행되
도록 rank 1인 텐서로 입력하시오
5
3
input
input
mul
add
add
23
a
b
c
d
e
Tensorflow 자료구조 : Variable
Variable
 머신 러닝은 속성상 시간에 따라 변경되는 값을 저장할 수 있는 방법이 필요하다.
 Session.run() 호출 동안 유지되면서 변경 가능한 텐서 값을 보관하기 위하여 Variable 객체를 사용한다.
 단, 초기화를 하지 않으면 variable에 값이 할당이 되지 않으므로 반드시 tf.global_variables_initializer()
를 실행해야한다.
 초기값을 직접 지정해주는 방법과 무작위의 초기값을 생성하는 함수를 이용하는 방법이 있다.
Variable - example
tf.reduce_mean
tf.reduce_mean
tf.reduce_mean – example
x = np.array([[1,2,3],
[4,5,6],
[7,8,9]])
a = tf.reduce_mean(x,axis=0) [4 5 6]
a = tf.reduce_mean(x,axis=1) [2 5 8]
a = tf.reduce_mean(x) 5
→
→
→
x = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
x = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
4 5 6
2
5
8
case 1 : axis=0
case 2 : axis=1
tf.assign
tf.assign
변수에 새로운 값을 할당하기 위하여 사용한다.
Example 1
a = tf.Variable(initial_value=3, dtype = tf.float32)
b = tf.assign(a,1) or a.assign(1)
sess = tf.Session()
sess.run(tf.global_variables_initializer())
print(sess.run(a)) → 3.0
print(sess.run(b)) → 1.0
print(sess.run(a)) → 1.0
How to load and save data
np.loadtxt(filename, dtype, delimiter, skiprows)
Example
import numpy as np
np.loadtxt(".../data.csv", delimiter=',', dtype=np.float32)
# skiprows = n 인 경우, 위에서 n번째 줄까지 제외하고 불러온다.
np.savetxt(filename, X, delimiter)
Example
import numpy as np
a = np.array([[1,2,3],[4,5,6],[7,8,9]])
np.savetxt(".../data.csv", a, delimiter=',')
3. 인터넷 강의 “Lab02 (linear regression)” 슬라이드에서
“Full code with placeholder”페이지의 코드를 다음의 데이터를 가지고 실행해보고 실행 결과
화면을 캡쳐해서 보고서에 정리한다.
X=[1,2,3,4,…,10], Y=[2.2, 5.2, 6.1, 7.9, 10.5, 11.8, 15, 16, 18.2, 20]
4. 인터넷 강의 “Lab03 (linear regression cost 함수 최소화)” 슬라이드를 참고
하여 3번의 데이터를 가지고 cost 함수의 그래프를 그리고 실행화면을 캡쳐해서
보고서에 추가하시오
5. data.csv 파일의 데이터를 읽어 4/5를 training set으로 하고 나머지 1/5을 test set으로 해서,
training set으로 linear regression을 수행하여 test set에 대한 처음 다섯 행은 예측값과 실제값을
프린트하고, 전체 cost의 평균값을 프린트하는 코드를 작성하고 테스트하시오.
제출과제-3 (10월 11일까지 제출)
제출과제
 제출 기한
 1차 : 10월 12일 전일 자정까지 (10점 만점 채점)
 2차 : 10월 12일 후 다음 수업시간 전일 자정까지(7점 만점 채점)
 이후 제출은 미제출로 간주(점수 없음)
 제출 방법
1) Source 코드 (.py)
2) 실행 결과 화면 캡쳐해서 작성한 보고서
3) 1)과 2)를 폴더에 넣은 후 압축하여 사이버 캠퍼스에 제출.
4) 폴더 및 파일명 : CS00_과제번호_학번_이름
압축
[Lab2] Logistic classification
• Hypothesis : linear function
• Prediction : 예측값이 0.5보다 클 때와 작을 때를 기준으로 class label 결정
• magic.csv 파일의 데이터를 읽어 4/5를 training set으로 하고 나머지 1/5을 test set으로 하
여, training set으로 linear classification을 수행한 후 test set에 대한 accuracy를 구하여 프
린트하는 코드를 작성하시오.
• Step 을 어떻게 설정해야 test set 에 대한 높은 accuracy를 얻을 수 있는지 고려해야 합니다.
제출과제1 (10월 25일까지 제출) – linear hypothesis 이용한 classification
• Hypothesis : logistic function
• Prediction : 예측값이 0.5보다 클 때와 작을 때를 기준으로 class label 결정
• magic.csv 파일의 데이터를 읽어 4/5를 training set으로 하고 나머지 1/5을 test set으로하
여, training set으로 logistic classification을 수행한 후 test set에 대한 accuracy를 구하여
프린트하는 코드를 작성하시오.
• Step 을 어떻게 설정해야 test set 에 대한 높은 accuracy를 얻을 수 있는지 고려해야 합니다.
• magic.csv : Data are MC generated to simulate registration of high energy gamma particles in
an atmospheric Cherenkov telescope
instance 19020개, feature: 10개, class: 2개
제출과제2 (10월 25일까지 제출) – logistic classification
• “Lab06” 슬라이드 코드를 참고하여 image.csv 파일의 데이터를 읽어 4/5를 training set으로
하고 나머지 1/5을 test set으로하여, training set으로 softmax classification을 수행하여
test set에 대한 정확도를 프린트하는 코드를 작성하시오.
• Step 을 어떻게 설정해야 test set 에 대한 높은 accuracy를 얻을 수 있는지 고려해야 합니다.
• magic.csv : 야외 이미지 데이터로 벽돌면, 하늘, 단풍, 시멘트, 창, 경로, 잔디를 나타내는
클래스로 이루어짐
instance 2310개, feature: 19개, class: 7개
제출과제3 (10월 25일까지 제출) – softmax classification
제출과제
 제출 기한
 1차 : 10월 25일 자정까지 (10점 만점 채점)
 2차 : 10월 25일 후 다음 수업시간 전일 자정까지(7점 만점 채점)
 이후 제출은 미제출로 간주(점수 없음)
 제출 방법
1) Source 코드 (.py)
2) 실행 결과 화면 캡쳐해서 작성한 보고서
3) 1)과 2)를 폴더에 넣은 후 압축하여 사이버 캠퍼스에 제출.
4) 폴더 및 파일명 : CS00_과제번호_학번_이름
압축
[Lab3] train, validation, test
[Lab 7-2]를 참고하여 Mnist 데이터를 불러온 후,
• Training set으로 softmax classification을 수행하여 모델을 학습하고
• 매 epoch마다 train과 validation, test set에 대한 정확도를 측정하여 저장하시오
• Epoch에 따른 Train, validation, test set 의 정확도를 그래프로 그려 비교하시오
• Learning rate를 0.01, 0.1, 0.5로 할 때의 결과들을 비교해서 분석하시오
제출과제3 (11월 1일까지 제출) – mnist 데이터를 이용한 softmax classification
• matplotlib 라이브러리를 이용하여 그래프를 그린다.
Example)
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
data1 = np.array([1,2,3,4,5,6,7,8,9,10])
data2 = data1**2
plt.plot(data1, ‘k--’, lable=‘data1’)
plt.plot(data2, ‘r--’, lable=‘data2’)
plt.legend() #범례
plt.show() #그래프 보이기
그래프 그리기(matplotlib 이용)
* 참고 : https://matplotlib.org/index.html
제출 과제
 제출 기한
 1차 : 11월 1일 자정까지 (10점 만점 채점)
 2차 : 11월 8일 자정까지(7점 만점 채점)
 이후 제출은 미제출로 간주(점수 없음)
 제출 방법
1) Source 코드 (.py)
2) 실행 결과 화면 캡쳐해서 작성한 보고서
3) 1)과 2)를 폴더에 넣은 후 압축하여 사이버 캠퍼스에 제출.
4) 폴더 및 파일명 : CS00_과제번호_학번_이름
압축
[Lab9] TensorBoard
Tensorboard (tf.summary.FileWriter사용법)
 tf.summary.FileWriter(name)
writer = tf.summary.FileWriter(“dirname”)
writer.add_graph(sess.graph)
 Example
Step1) py파일을 만들어 다음을 작성하고 실행
import tensorflow as tf
a = tf.constant(1,name='input_a')
b = tf.constant(2,name='input_b')
c = tf.add(a,b,name='sum_c')
sess = tf.Session()
writer = tf.summary.FileWriter("./board1")
writer.add_graph(sess.graph)
Step2) board1 폴더가 생겼는지 확인
원하는 경로 설정
board1 폴더 내 파일이 생겼는지 확인
Tensorboard
Step3) cmd창을 열고 board1의 상위 폴더까지 이동
현재 D:/SL/board1 으로 되어 있음
Step4) cmd창에 다음을 입력
tensorboard –-logdir=board1
주소를 chrome에 붙여 넣으면 오른쪽과 같은 그림이 나옴
예) 텐서 보드 화면
Tensorboard (복잡한 예)
 xor_nn.py
xor문제를 풀기 위해 두 층으로 만든 구조
…
W1 = tf.Variable(tf.random_normal([2, 2]), name='weight1')
b1 = tf.Variable(tf.random_normal([2]), name='bias1')
layer1 = tf.sigmoid(tf.matmul(X, W1) + b1)
W2 = tf.Variable(tf.random_normal([2, 1]), name='weight2')
b2 = tf.Variable(tf.random_normal([1]), name='bias2')
hypothesis = tf.sigmoid(tf.matmul(layer1, W2) + b2)
…
예) 텐서 보드 화면 xor_nn.py
* 두 층으로 만든 간단한 구조임에도 텐서 보드 상에서
우리가 만든 노드들(예를 들어 weight와 bias)을
살펴보기가 어렵다.
Tensorboard (with tf.name_scope(name)사용법)
 with tf.name_scope(name)
원하는 노드를 시각화하기 편하도록 하나의 이름으로 묶기 위해 사용.
 예) xor_nn_name_scope.py
with tf.name_scope('Layer1'):
W1 = tf.Variable(tf.random_normal([2, 10]), name='weight1')
b1 = tf.Variable(tf.random_normal([10]), name='bias1')
layer1 = tf.sigmoid(tf.matmul(X, W1) + b1)
with tf.name_scope('Layer2'):
W2 = tf.Variable(tf.random_normal([10, 10]), name='weight2')
b2 = tf.Variable(tf.random_normal([10]), name='bias2')
layer2 = tf.sigmoid(tf.matmul(layer1, W2) + b2)
예) 텐서 보드 화면 xor_nn_name_scope.py
Tensorboard (tf.summary.scalar)
 tf.summary.scalar(‘name’, value)
노드에서 scalar에 해당하는 값들을 모아서 추이를 살필 때 사용
예) cost, accuracy, entropy
 예) xor_nn_summary_scalar_hist.py
cost = -tf.reduce_mean(Y * tf.log(hypothesis) + (1 - Y)*tf.log(1 - hypothesis))
cost_scalar = tf.summary.scalar('cost',cost)
…
summary = tf.summary.merge_all()
with tf.Session() as sess:
writer = tf.summary.FileWriter("./board4")
writer.add_graph(sess.graph)
…
for step in range(10001):
s,_ = sess.run([summary,train], feed_dict={X: x_data, Y: y_data})
writer.add_summary(s, global_step=step)
예) 텐서 보드 화면(SCALARS tab확인)
Tensorboard (tf.summary.histogram)
 tf.summary.histogram(‘name’, value)
노드에서 vector에 해당하는 값들을 모아서 분포를 확인하기 위하여 사용
예) weight, bias
 예) xor_nn_summary_scalar_hist.py
with tf.name_scope('Layer1'):
W1 = tf.Variable(tf.random_normal([2, 10]), name='weight1')
b1 = tf.Variable(tf.random_normal([10]), name='bias1')
layer1 = tf.sigmoid(tf.matmul(X, W1) + b1)
W1_hist = tf.summary.histogram('weights1',W1)
b1_hist = tf.summary.histogram('biases1',b1)
layer1_hist = tf.summary.histogram('layer1',layer1)
이하 tf.summary.scalar와 과정 동일
예) 텐서 보드 화면(HISTOGRAM tab확인)
Tensorboard (multiple_run)
 값을 여러 개 비교하고자 할 때, 상위 경로 밑에 비교하고자하는 parameter에 적용할
값에 개수에 따라 하위 경로를 만들어 그래프를 저장해주면 된다.
 예)
train =tf.train.GradientDescentOptimizer(learning_rate=0.1).minimize(cost)
tf.summary.FileWriter(‘./logs/lr0.01’)
…
train =tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(cost)
tf.summary.FileWriter(‘./logs/lr0.1’)
tensorboard --logdir=./logs
[Lab 7-2]를 참고하여 Mnist 데이터를 불러온 후,
Train set을 이용해 softmax classifier를 학습하는 코드를 수정하여 다음을 수행하시오
1. with tf.name_scope(name)을 이용하여 그래프를 텐서보드에서 시각화하시오.
2. tf.summary.scalar()를 이용하여 cost와 accuray를 텐서보드에 epoch에 따라 그래프를
그리고 텐서보드 화면을 캡쳐하시오.
3. tf.summary.histogram()을 이용하여 w와 b의 histogram을 텐서보드에 나타내고 epoch
에 따른 w와 b의 변화를 분석하시오.
* 각 과제에서 텐서보드의 화면을 캡쳐하여 보고서에 작성하시오.
제출과제1 (11월 15일까지 제출) – mnist 데이터 셋을 이용한 텐서보드
[Lab 10]을 참고하여 image.csv 파일의 데이터를 읽어 4/5를 training set으로 하고
나머지 1/5을 test set으로하여, training set을 이용하여 softmax classifier를 학습
하고 test set을 이용해 정확도를 측정하시오. (기본 학습 횟수(epoch)은 2,000회)
다음의 각 경우에 맞게 학습환경을 변경하여 학습한 후 test set 정확도를 비교하시오.
1. 은닉층을 1층으로 할 때 vs 은닉층을 3층으로 할 때
2. 은닉층이 3층인 softmax classification에서
Xavier initializer 이용 vs random normal initializer
3. 은닉층이 3이고 xavier초기화를 사용한 코드에서
dropout (keep_prob=0.7) 사용 vs dropout 을 사용하지 않았을 때
제출과제2 (11월 15일까지 제출) – deep softmax classification
제출 기한
 제출 기한
 1차 : 11월 15일 자정까지 (10점 만점 채점)
 2차 : 11월 22일 자정까지(7점 만점 채점)
 이후 제출은 미제출로 간주(점수 없음)
 제출 방법
1) Source 코드 (.py)
2) 실행 결과 화면 캡쳐해서 작성한 보고서
3) 1)과 2)를 폴더에 넣은 후 압축하여 사이버 캠퍼스에 제출.
4) 폴더 및 파일명 : CS00_과제번호_학번_이름
압축
[Lab11] CNN
 Cifar10은 60,000개의 32x32 color image(training image : 50,000개, test image : 10,000개)로 이루어
져 있다. (Download site https://www.cs.toronto.edu/~kriz/cifar.html)
 10개의 클래스(airplane, automobile, bird, cat, deer, dog, frog, horse, ship, truck)를 가지고 있다.
 Baseline results
- cuda-convnet : CNN을 통하여 약 18% 테스트 오류율을 가짐
Cifar10 Dataset
 Cifar-10 python version을 다운 받는다.
 다운로드 된 파일의 압축을 풀면 다음과 같은 파일들을 얻을 수 있다.
 train set은 10,000개씩 5개로 나누어져 있다.
Cifar10 Dataset Download
클릭!!
1) unpickle된 데이터의 자료구조는 사전형(dictionary)이며
key로 data와 labels를 가짐을 알 수 있다.
2) 1~5로 나누어진 train 데이터를 합쳐주고 feature와 label
로 나누는 과정이 필요하다.
 Cifar10 데이터를 얻기 위해선 unpickle이라는 함수를 사용한다.
Cifar10 Dataset Download
[참조] https://www.cs.toronto.edu/~kriz/cifar.html)
저장한 경로
 Cifar10 데이터를 Download하고 이를 numpy의 저장 형식인 npy로 만들어주는 코드를 제공
 제공한 소스코드 를 더블클릭한다.
 다음의 네 개의 파일이 생성된다.
 npy 파일은 다음과 같이 읽을 수 있다.
Cifar10 Dataset Download
[Note] Cifar10의 train데이터는 50,000개이며, 각 샘플들은
RGB 3채널을 가진 32x32이미지를 각각 1x3072 벡터로
되어 있다.
 [Lab 11-2]를 참고하여 trainX.npy, trainY.npy, testX.npy, testY.npy파일의 데이터를 읽어
미니 배치 사이즈를 100으로 하여 데이터를 나누어 학습시키는 CNN을 구현하고, 깊고 넓게
(deep and wide) 구조를 변화시켜가면서 test accuracy가 가장 높은 모델을 찾으시오.
실행한 결과를 캡쳐하고 보고서를 작성하시오.
(단, 모델을 선택한 이유를 명확히 써야하며 학습 시 code에서 seed를 tf.set_random_seed(0)
으로 설정하시오.)
제출과제 (11월 29일까지 제출) – CNN
제출 기한
 제출 기한
 1차 : 11월 29일 자정까지 (10점 만점 채점)
 2차 : 12월 06일 자정까지(7점 만점 채점)
 이후 제출은 미제출로 간주(점수 없음)
 제출 방법
1) Source 코드 (.py)
2) 실행 결과 화면 캡쳐해서 작성한 보고서
3) 1)과 2)를 폴더에 넣은 후 압축하여 사이버 캠퍼스에 제출.
4) 폴더 및 파일명 : CS06_과제번호_학번_이름
압축

Mais conteúdo relacionado

Semelhante a Mylab

R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1happychallenge
 
[SWCON211] LectureCode_13_Matlab Practice.pptx
[SWCON211] LectureCode_13_Matlab Practice.pptx[SWCON211] LectureCode_13_Matlab Practice.pptx
[SWCON211] LectureCode_13_Matlab Practice.pptxoreo329
 
임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기
임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기
임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기Daegi Kim
 
위성관측 데이터 활용 강수량 산출 AI 경진대회 1위 수상작
위성관측 데이터 활용 강수량 산출 AI 경진대회 1위 수상작위성관측 데이터 활용 강수량 산출 AI 경진대회 1위 수상작
위성관측 데이터 활용 강수량 산출 AI 경진대회 1위 수상작DACON AI 데이콘
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리Seungyong Lee
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 명신 김
 
파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리Booseol Shin
 
[신경망기초] 퍼셉트론구현
[신경망기초] 퍼셉트론구현[신경망기초] 퍼셉트론구현
[신경망기초] 퍼셉트론구현jaypi Ko
 
사운드처리_텀과제_이정근.pptx
사운드처리_텀과제_이정근.pptx사운드처리_텀과제_이정근.pptx
사운드처리_텀과제_이정근.pptxtangtang1026
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용Youngjae Kim
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 
자료구조 Project2
자료구조 Project2자료구조 Project2
자료구조 Project2KoChungWook
 
딥러닝계의 블루오션, Apache MXNet 공헌하기 - 윤석찬 (AWS 테크에반젤리스트) 오규삼 (삼성 SDS)
딥러닝계의 블루오션, Apache MXNet 공헌하기 - 윤석찬 (AWS 테크에반젤리스트) 오규삼 (삼성 SDS)딥러닝계의 블루오션, Apache MXNet 공헌하기 - 윤석찬 (AWS 테크에반젤리스트) 오규삼 (삼성 SDS)
딥러닝계의 블루오션, Apache MXNet 공헌하기 - 윤석찬 (AWS 테크에반젤리스트) 오규삼 (삼성 SDS)Amazon Web Services Korea
 
국민대학교 고급 시스템 프로젝트 #1
국민대학교 고급 시스템 프로젝트 #1국민대학교 고급 시스템 프로젝트 #1
국민대학교 고급 시스템 프로젝트 #1dldmsmchddldmschd
 
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariocho
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariochoTfk 6618 tensor_flow로얼굴인식구현_r10_mariocho
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariochoMario Cho
 
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)Seungmin Yu
 
Monitoring System for DevOps - Case of MelOn
Monitoring System for DevOps - Case of MelOnMonitoring System for DevOps - Case of MelOn
Monitoring System for DevOps - Case of MelOnDataya Nolja
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10흥배 최
 
Python 활용: 이미지 처리와 데이터 분석
Python 활용: 이미지 처리와 데이터 분석Python 활용: 이미지 처리와 데이터 분석
Python 활용: 이미지 처리와 데이터 분석용 최
 

Semelhante a Mylab (20)

R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1R 프로그램의 이해와 활용 v1.1
R 프로그램의 이해와 활용 v1.1
 
[SWCON211] LectureCode_13_Matlab Practice.pptx
[SWCON211] LectureCode_13_Matlab Practice.pptx[SWCON211] LectureCode_13_Matlab Practice.pptx
[SWCON211] LectureCode_13_Matlab Practice.pptx
 
Python
PythonPython
Python
 
임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기
임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기
임베디드 시스템 설계 프로젝트: EMPOS-II를 활용한 영어단어 학습기
 
위성관측 데이터 활용 강수량 산출 AI 경진대회 1위 수상작
위성관측 데이터 활용 강수량 산출 AI 경진대회 1위 수상작위성관측 데이터 활용 강수량 산출 AI 경진대회 1위 수상작
위성관측 데이터 활용 강수량 산출 AI 경진대회 1위 수상작
 
리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리리눅스 커널 기초 태스크관리
리눅스 커널 기초 태스크관리
 
불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14 불어오는 변화의 바람, From c++98 to c++11, 14
불어오는 변화의 바람, From c++98 to c++11, 14
 
파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리
 
[신경망기초] 퍼셉트론구현
[신경망기초] 퍼셉트론구현[신경망기초] 퍼셉트론구현
[신경망기초] 퍼셉트론구현
 
사운드처리_텀과제_이정근.pptx
사운드처리_텀과제_이정근.pptx사운드처리_텀과제_이정근.pptx
사운드처리_텀과제_이정근.pptx
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
자료구조 Project2
자료구조 Project2자료구조 Project2
자료구조 Project2
 
딥러닝계의 블루오션, Apache MXNet 공헌하기 - 윤석찬 (AWS 테크에반젤리스트) 오규삼 (삼성 SDS)
딥러닝계의 블루오션, Apache MXNet 공헌하기 - 윤석찬 (AWS 테크에반젤리스트) 오규삼 (삼성 SDS)딥러닝계의 블루오션, Apache MXNet 공헌하기 - 윤석찬 (AWS 테크에반젤리스트) 오규삼 (삼성 SDS)
딥러닝계의 블루오션, Apache MXNet 공헌하기 - 윤석찬 (AWS 테크에반젤리스트) 오규삼 (삼성 SDS)
 
국민대학교 고급 시스템 프로젝트 #1
국민대학교 고급 시스템 프로젝트 #1국민대학교 고급 시스템 프로젝트 #1
국민대학교 고급 시스템 프로젝트 #1
 
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariocho
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariochoTfk 6618 tensor_flow로얼굴인식구현_r10_mariocho
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariocho
 
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
 
Monitoring System for DevOps - Case of MelOn
Monitoring System for DevOps - Case of MelOnMonitoring System for DevOps - Case of MelOn
Monitoring System for DevOps - Case of MelOn
 
About Visual C++ 10
About  Visual C++ 10About  Visual C++ 10
About Visual C++ 10
 
Python 활용: 이미지 처리와 데이터 분석
Python 활용: 이미지 처리와 데이터 분석Python 활용: 이미지 처리와 데이터 분석
Python 활용: 이미지 처리와 데이터 분석
 

Mais de Lee Gyeong Hoon

Mais de Lee Gyeong Hoon (8)

Nlp study1
Nlp study1Nlp study1
Nlp study1
 
Vae
VaeVae
Vae
 
Gan
GanGan
Gan
 
Svmtf
SvmtfSvmtf
Svmtf
 
The fastalgorithmfordeepbeliefnets
The fastalgorithmfordeepbeliefnetsThe fastalgorithmfordeepbeliefnets
The fastalgorithmfordeepbeliefnets
 
Convolutional rnn
Convolutional rnnConvolutional rnn
Convolutional rnn
 
세미나 20170929
세미나 20170929세미나 20170929
세미나 20170929
 
Where to Apply Dropout in Recurrent Neural Networks for Handwriting Recognition?
Where to Apply Dropout in Recurrent Neural Networks for Handwriting Recognition?Where to Apply Dropout in Recurrent Neural Networks for Handwriting Recognition?
Where to Apply Dropout in Recurrent Neural Networks for Handwriting Recognition?
 

Mylab

  • 1. [Lab1] Basic Tensorflow Prepared by Gyeong-hoon Lee Data Mining Lab. 503 E-mail : ghlee0304@cnu.ac.kr
  • 2. 1) prompt창에 다음을 입력합니다. pip3 install –-upgrade tensorflow 2) tensorflow windows의 경우 C++ 2015 재배포 패키지가 필요합니다. 아래 오른쪽 마우스 클릭 후 하이퍼 링크 열기 ▷ https://www.microsoft.com/en-us/download/details.aspx?id=53587 ▷ How to Install Tensorflow (1)
  • 3. 3) 다운로드 후 파일을 설치 How to Install Tensorflow (2) 체크 후 다음 클릭 다운로드된 파일 설치
  • 4. How to Install Tensorflow (3) 4) 설치가 완료되었습니다. 이를 확인하기 위해서 다음과 같이 진행합니다. C:> python >>> import tensorflow as tf >>> tf.__version__ ‘1.2.1’ >>> a = tf.constant(1) >>> b = tf.constant(2) >>> c = tf.add(a, b) >>> sess = tf.Session() >>> print(sess.run(c)) 3 <cmd 실행화면 > <idle 실행 화면>
  • 5. Python Libraries for numerical computation in tensorflow - numpy : 배열을 이용하여 수치 계산을 더욱 빠르게 하기 위하여 사용하는 라이브러리 [tutorial site] https://docs.scipy.org/doc/numpy-dev/user/quickstart.html >>> pip3 install numpy - pandas : 테이블, 시리즈 등의 자료형을 이용하여 데이터를 쉽게 다루기 위한 라이브러리 [tutorial site] http://pandas.pydata.org/pandas-docs/stable/10min.html >>> pip3 install pandas - matplotlib : 데이터의 분포나 추세 등을 그래프를 통하여 확인할 때 사용하는 라이브러리 [tutorial site] https://matplotlib.org/users/pyplot_tutorial.html >>> pip3 install matplotlib Other libraries
  • 6. Tensorflow 자료구조 : Constant Constant  이 함수는 스칼라 값을 텐서 객체로 자동으로 변경해준다.  우리가 생성하는 노드에 식별자를 부여하기 위해서 문자열인 name 파라미터를 적을 수 있다.
  • 7. 1) placeholder 사용자로부터 다양한 입력 값을 받기 위하여 자리(place)를 지니고(hold) 있는 노드 따라서 생성시 값을 가지지 않음 2) feed_dict (feed dictionary) - 그래프에서 placeholder 노드에 값을 입력할 때 사용되며, 그 값들은 숫자, 문자열, 리스트, numpy 배열이 될 수 있다 - 파이썬에서 사전(dictionary)은 {key :value} 쌍을 가지는 자료형 Tensorflow 자료구조 : PlaceHolder input값의 자료형 “int” or “float” 등등 input의 모양 tensor shape node의 이름 (필수) (선택) (선택)
  • 8. Tensorflow 자료구조 : PlaceHolder - Example 3) placeholder shape 예) shape = [] : 0차 텐서, 스칼라 - shape = [3] : 1차 텐서 - shape = [1,3] : 2차 텐서 * 텐서 모양(shape)이 같아야 서로 연산이 가능하다. 4) placeholder에 feed_dict로 값 전달 - sess.run(대상, feed_dict={플레이스홀더 : 입력 값})
  • 9.
  • 10. 1. 인터넷 강의 “Lab01:Tensorflow의 기본” 슬라이드에서 in [ ]…. 으로 표시된 블록들을 차례대로 추가해가면서 실행해보고 실행 결과 화면을 캡쳐해서 보고서에 정리한다. 제출과제-1 (10월 11일까지 제출)
  • 11. 제출과제-2 (10월 11일까지 제출) 2. 다음의 그래프대로 구현하는 코드를 작성하고 - a와 b를 tf.constant 5와 3으로 구현 - a와 b를 tf.placeholder를 이용하여 구현하고 (a,b)=(1,2), (3,4), (5,6),(7,8), (9,10)일 때 한꺼번에 실행되 도록 rank 1인 텐서로 입력하시오 5 3 input input mul add add 23 a b c d e
  • 12. Tensorflow 자료구조 : Variable Variable  머신 러닝은 속성상 시간에 따라 변경되는 값을 저장할 수 있는 방법이 필요하다.  Session.run() 호출 동안 유지되면서 변경 가능한 텐서 값을 보관하기 위하여 Variable 객체를 사용한다.  단, 초기화를 하지 않으면 variable에 값이 할당이 되지 않으므로 반드시 tf.global_variables_initializer() 를 실행해야한다.  초기값을 직접 지정해주는 방법과 무작위의 초기값을 생성하는 함수를 이용하는 방법이 있다. Variable - example
  • 13. tf.reduce_mean tf.reduce_mean tf.reduce_mean – example x = np.array([[1,2,3], [4,5,6], [7,8,9]]) a = tf.reduce_mean(x,axis=0) [4 5 6] a = tf.reduce_mean(x,axis=1) [2 5 8] a = tf.reduce_mean(x) 5 → → → x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) x = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 4 5 6 2 5 8 case 1 : axis=0 case 2 : axis=1
  • 14. tf.assign tf.assign 변수에 새로운 값을 할당하기 위하여 사용한다. Example 1 a = tf.Variable(initial_value=3, dtype = tf.float32) b = tf.assign(a,1) or a.assign(1) sess = tf.Session() sess.run(tf.global_variables_initializer()) print(sess.run(a)) → 3.0 print(sess.run(b)) → 1.0 print(sess.run(a)) → 1.0
  • 15. How to load and save data np.loadtxt(filename, dtype, delimiter, skiprows) Example import numpy as np np.loadtxt(".../data.csv", delimiter=',', dtype=np.float32) # skiprows = n 인 경우, 위에서 n번째 줄까지 제외하고 불러온다. np.savetxt(filename, X, delimiter) Example import numpy as np a = np.array([[1,2,3],[4,5,6],[7,8,9]]) np.savetxt(".../data.csv", a, delimiter=',')
  • 16. 3. 인터넷 강의 “Lab02 (linear regression)” 슬라이드에서 “Full code with placeholder”페이지의 코드를 다음의 데이터를 가지고 실행해보고 실행 결과 화면을 캡쳐해서 보고서에 정리한다. X=[1,2,3,4,…,10], Y=[2.2, 5.2, 6.1, 7.9, 10.5, 11.8, 15, 16, 18.2, 20] 4. 인터넷 강의 “Lab03 (linear regression cost 함수 최소화)” 슬라이드를 참고 하여 3번의 데이터를 가지고 cost 함수의 그래프를 그리고 실행화면을 캡쳐해서 보고서에 추가하시오 5. data.csv 파일의 데이터를 읽어 4/5를 training set으로 하고 나머지 1/5을 test set으로 해서, training set으로 linear regression을 수행하여 test set에 대한 처음 다섯 행은 예측값과 실제값을 프린트하고, 전체 cost의 평균값을 프린트하는 코드를 작성하고 테스트하시오. 제출과제-3 (10월 11일까지 제출)
  • 17. 제출과제  제출 기한  1차 : 10월 12일 전일 자정까지 (10점 만점 채점)  2차 : 10월 12일 후 다음 수업시간 전일 자정까지(7점 만점 채점)  이후 제출은 미제출로 간주(점수 없음)  제출 방법 1) Source 코드 (.py) 2) 실행 결과 화면 캡쳐해서 작성한 보고서 3) 1)과 2)를 폴더에 넣은 후 압축하여 사이버 캠퍼스에 제출. 4) 폴더 및 파일명 : CS00_과제번호_학번_이름 압축
  • 19. • Hypothesis : linear function • Prediction : 예측값이 0.5보다 클 때와 작을 때를 기준으로 class label 결정 • magic.csv 파일의 데이터를 읽어 4/5를 training set으로 하고 나머지 1/5을 test set으로 하 여, training set으로 linear classification을 수행한 후 test set에 대한 accuracy를 구하여 프 린트하는 코드를 작성하시오. • Step 을 어떻게 설정해야 test set 에 대한 높은 accuracy를 얻을 수 있는지 고려해야 합니다. 제출과제1 (10월 25일까지 제출) – linear hypothesis 이용한 classification
  • 20. • Hypothesis : logistic function • Prediction : 예측값이 0.5보다 클 때와 작을 때를 기준으로 class label 결정 • magic.csv 파일의 데이터를 읽어 4/5를 training set으로 하고 나머지 1/5을 test set으로하 여, training set으로 logistic classification을 수행한 후 test set에 대한 accuracy를 구하여 프린트하는 코드를 작성하시오. • Step 을 어떻게 설정해야 test set 에 대한 높은 accuracy를 얻을 수 있는지 고려해야 합니다. • magic.csv : Data are MC generated to simulate registration of high energy gamma particles in an atmospheric Cherenkov telescope instance 19020개, feature: 10개, class: 2개 제출과제2 (10월 25일까지 제출) – logistic classification
  • 21. • “Lab06” 슬라이드 코드를 참고하여 image.csv 파일의 데이터를 읽어 4/5를 training set으로 하고 나머지 1/5을 test set으로하여, training set으로 softmax classification을 수행하여 test set에 대한 정확도를 프린트하는 코드를 작성하시오. • Step 을 어떻게 설정해야 test set 에 대한 높은 accuracy를 얻을 수 있는지 고려해야 합니다. • magic.csv : 야외 이미지 데이터로 벽돌면, 하늘, 단풍, 시멘트, 창, 경로, 잔디를 나타내는 클래스로 이루어짐 instance 2310개, feature: 19개, class: 7개 제출과제3 (10월 25일까지 제출) – softmax classification
  • 22. 제출과제  제출 기한  1차 : 10월 25일 자정까지 (10점 만점 채점)  2차 : 10월 25일 후 다음 수업시간 전일 자정까지(7점 만점 채점)  이후 제출은 미제출로 간주(점수 없음)  제출 방법 1) Source 코드 (.py) 2) 실행 결과 화면 캡쳐해서 작성한 보고서 3) 1)과 2)를 폴더에 넣은 후 압축하여 사이버 캠퍼스에 제출. 4) 폴더 및 파일명 : CS00_과제번호_학번_이름 압축
  • 24. [Lab 7-2]를 참고하여 Mnist 데이터를 불러온 후, • Training set으로 softmax classification을 수행하여 모델을 학습하고 • 매 epoch마다 train과 validation, test set에 대한 정확도를 측정하여 저장하시오 • Epoch에 따른 Train, validation, test set 의 정확도를 그래프로 그려 비교하시오 • Learning rate를 0.01, 0.1, 0.5로 할 때의 결과들을 비교해서 분석하시오 제출과제3 (11월 1일까지 제출) – mnist 데이터를 이용한 softmax classification
  • 25. • matplotlib 라이브러리를 이용하여 그래프를 그린다. Example) import matplotlib.pyplot as plt import numpy as np fig = plt.figure() data1 = np.array([1,2,3,4,5,6,7,8,9,10]) data2 = data1**2 plt.plot(data1, ‘k--’, lable=‘data1’) plt.plot(data2, ‘r--’, lable=‘data2’) plt.legend() #범례 plt.show() #그래프 보이기 그래프 그리기(matplotlib 이용) * 참고 : https://matplotlib.org/index.html
  • 26. 제출 과제  제출 기한  1차 : 11월 1일 자정까지 (10점 만점 채점)  2차 : 11월 8일 자정까지(7점 만점 채점)  이후 제출은 미제출로 간주(점수 없음)  제출 방법 1) Source 코드 (.py) 2) 실행 결과 화면 캡쳐해서 작성한 보고서 3) 1)과 2)를 폴더에 넣은 후 압축하여 사이버 캠퍼스에 제출. 4) 폴더 및 파일명 : CS00_과제번호_학번_이름 압축
  • 28. Tensorboard (tf.summary.FileWriter사용법)  tf.summary.FileWriter(name) writer = tf.summary.FileWriter(“dirname”) writer.add_graph(sess.graph)  Example Step1) py파일을 만들어 다음을 작성하고 실행 import tensorflow as tf a = tf.constant(1,name='input_a') b = tf.constant(2,name='input_b') c = tf.add(a,b,name='sum_c') sess = tf.Session() writer = tf.summary.FileWriter("./board1") writer.add_graph(sess.graph) Step2) board1 폴더가 생겼는지 확인 원하는 경로 설정 board1 폴더 내 파일이 생겼는지 확인
  • 29. Tensorboard Step3) cmd창을 열고 board1의 상위 폴더까지 이동 현재 D:/SL/board1 으로 되어 있음 Step4) cmd창에 다음을 입력 tensorboard –-logdir=board1 주소를 chrome에 붙여 넣으면 오른쪽과 같은 그림이 나옴 예) 텐서 보드 화면
  • 30. Tensorboard (복잡한 예)  xor_nn.py xor문제를 풀기 위해 두 층으로 만든 구조 … W1 = tf.Variable(tf.random_normal([2, 2]), name='weight1') b1 = tf.Variable(tf.random_normal([2]), name='bias1') layer1 = tf.sigmoid(tf.matmul(X, W1) + b1) W2 = tf.Variable(tf.random_normal([2, 1]), name='weight2') b2 = tf.Variable(tf.random_normal([1]), name='bias2') hypothesis = tf.sigmoid(tf.matmul(layer1, W2) + b2) … 예) 텐서 보드 화면 xor_nn.py * 두 층으로 만든 간단한 구조임에도 텐서 보드 상에서 우리가 만든 노드들(예를 들어 weight와 bias)을 살펴보기가 어렵다.
  • 31. Tensorboard (with tf.name_scope(name)사용법)  with tf.name_scope(name) 원하는 노드를 시각화하기 편하도록 하나의 이름으로 묶기 위해 사용.  예) xor_nn_name_scope.py with tf.name_scope('Layer1'): W1 = tf.Variable(tf.random_normal([2, 10]), name='weight1') b1 = tf.Variable(tf.random_normal([10]), name='bias1') layer1 = tf.sigmoid(tf.matmul(X, W1) + b1) with tf.name_scope('Layer2'): W2 = tf.Variable(tf.random_normal([10, 10]), name='weight2') b2 = tf.Variable(tf.random_normal([10]), name='bias2') layer2 = tf.sigmoid(tf.matmul(layer1, W2) + b2) 예) 텐서 보드 화면 xor_nn_name_scope.py
  • 32. Tensorboard (tf.summary.scalar)  tf.summary.scalar(‘name’, value) 노드에서 scalar에 해당하는 값들을 모아서 추이를 살필 때 사용 예) cost, accuracy, entropy  예) xor_nn_summary_scalar_hist.py cost = -tf.reduce_mean(Y * tf.log(hypothesis) + (1 - Y)*tf.log(1 - hypothesis)) cost_scalar = tf.summary.scalar('cost',cost) … summary = tf.summary.merge_all() with tf.Session() as sess: writer = tf.summary.FileWriter("./board4") writer.add_graph(sess.graph) … for step in range(10001): s,_ = sess.run([summary,train], feed_dict={X: x_data, Y: y_data}) writer.add_summary(s, global_step=step) 예) 텐서 보드 화면(SCALARS tab확인)
  • 33. Tensorboard (tf.summary.histogram)  tf.summary.histogram(‘name’, value) 노드에서 vector에 해당하는 값들을 모아서 분포를 확인하기 위하여 사용 예) weight, bias  예) xor_nn_summary_scalar_hist.py with tf.name_scope('Layer1'): W1 = tf.Variable(tf.random_normal([2, 10]), name='weight1') b1 = tf.Variable(tf.random_normal([10]), name='bias1') layer1 = tf.sigmoid(tf.matmul(X, W1) + b1) W1_hist = tf.summary.histogram('weights1',W1) b1_hist = tf.summary.histogram('biases1',b1) layer1_hist = tf.summary.histogram('layer1',layer1) 이하 tf.summary.scalar와 과정 동일 예) 텐서 보드 화면(HISTOGRAM tab확인)
  • 34. Tensorboard (multiple_run)  값을 여러 개 비교하고자 할 때, 상위 경로 밑에 비교하고자하는 parameter에 적용할 값에 개수에 따라 하위 경로를 만들어 그래프를 저장해주면 된다.  예) train =tf.train.GradientDescentOptimizer(learning_rate=0.1).minimize(cost) tf.summary.FileWriter(‘./logs/lr0.01’) … train =tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(cost) tf.summary.FileWriter(‘./logs/lr0.1’) tensorboard --logdir=./logs
  • 35. [Lab 7-2]를 참고하여 Mnist 데이터를 불러온 후, Train set을 이용해 softmax classifier를 학습하는 코드를 수정하여 다음을 수행하시오 1. with tf.name_scope(name)을 이용하여 그래프를 텐서보드에서 시각화하시오. 2. tf.summary.scalar()를 이용하여 cost와 accuray를 텐서보드에 epoch에 따라 그래프를 그리고 텐서보드 화면을 캡쳐하시오. 3. tf.summary.histogram()을 이용하여 w와 b의 histogram을 텐서보드에 나타내고 epoch 에 따른 w와 b의 변화를 분석하시오. * 각 과제에서 텐서보드의 화면을 캡쳐하여 보고서에 작성하시오. 제출과제1 (11월 15일까지 제출) – mnist 데이터 셋을 이용한 텐서보드
  • 36. [Lab 10]을 참고하여 image.csv 파일의 데이터를 읽어 4/5를 training set으로 하고 나머지 1/5을 test set으로하여, training set을 이용하여 softmax classifier를 학습 하고 test set을 이용해 정확도를 측정하시오. (기본 학습 횟수(epoch)은 2,000회) 다음의 각 경우에 맞게 학습환경을 변경하여 학습한 후 test set 정확도를 비교하시오. 1. 은닉층을 1층으로 할 때 vs 은닉층을 3층으로 할 때 2. 은닉층이 3층인 softmax classification에서 Xavier initializer 이용 vs random normal initializer 3. 은닉층이 3이고 xavier초기화를 사용한 코드에서 dropout (keep_prob=0.7) 사용 vs dropout 을 사용하지 않았을 때 제출과제2 (11월 15일까지 제출) – deep softmax classification
  • 37. 제출 기한  제출 기한  1차 : 11월 15일 자정까지 (10점 만점 채점)  2차 : 11월 22일 자정까지(7점 만점 채점)  이후 제출은 미제출로 간주(점수 없음)  제출 방법 1) Source 코드 (.py) 2) 실행 결과 화면 캡쳐해서 작성한 보고서 3) 1)과 2)를 폴더에 넣은 후 압축하여 사이버 캠퍼스에 제출. 4) 폴더 및 파일명 : CS00_과제번호_학번_이름 압축
  • 39.  Cifar10은 60,000개의 32x32 color image(training image : 50,000개, test image : 10,000개)로 이루어 져 있다. (Download site https://www.cs.toronto.edu/~kriz/cifar.html)  10개의 클래스(airplane, automobile, bird, cat, deer, dog, frog, horse, ship, truck)를 가지고 있다.  Baseline results - cuda-convnet : CNN을 통하여 약 18% 테스트 오류율을 가짐 Cifar10 Dataset
  • 40.  Cifar-10 python version을 다운 받는다.  다운로드 된 파일의 압축을 풀면 다음과 같은 파일들을 얻을 수 있다.  train set은 10,000개씩 5개로 나누어져 있다. Cifar10 Dataset Download 클릭!!
  • 41. 1) unpickle된 데이터의 자료구조는 사전형(dictionary)이며 key로 data와 labels를 가짐을 알 수 있다. 2) 1~5로 나누어진 train 데이터를 합쳐주고 feature와 label 로 나누는 과정이 필요하다.  Cifar10 데이터를 얻기 위해선 unpickle이라는 함수를 사용한다. Cifar10 Dataset Download [참조] https://www.cs.toronto.edu/~kriz/cifar.html) 저장한 경로
  • 42.  Cifar10 데이터를 Download하고 이를 numpy의 저장 형식인 npy로 만들어주는 코드를 제공  제공한 소스코드 를 더블클릭한다.  다음의 네 개의 파일이 생성된다.  npy 파일은 다음과 같이 읽을 수 있다. Cifar10 Dataset Download [Note] Cifar10의 train데이터는 50,000개이며, 각 샘플들은 RGB 3채널을 가진 32x32이미지를 각각 1x3072 벡터로 되어 있다.
  • 43.  [Lab 11-2]를 참고하여 trainX.npy, trainY.npy, testX.npy, testY.npy파일의 데이터를 읽어 미니 배치 사이즈를 100으로 하여 데이터를 나누어 학습시키는 CNN을 구현하고, 깊고 넓게 (deep and wide) 구조를 변화시켜가면서 test accuracy가 가장 높은 모델을 찾으시오. 실행한 결과를 캡쳐하고 보고서를 작성하시오. (단, 모델을 선택한 이유를 명확히 써야하며 학습 시 code에서 seed를 tf.set_random_seed(0) 으로 설정하시오.) 제출과제 (11월 29일까지 제출) – CNN
  • 44. 제출 기한  제출 기한  1차 : 11월 29일 자정까지 (10점 만점 채점)  2차 : 12월 06일 자정까지(7점 만점 채점)  이후 제출은 미제출로 간주(점수 없음)  제출 방법 1) Source 코드 (.py) 2) 실행 결과 화면 캡쳐해서 작성한 보고서 3) 1)과 2)를 폴더에 넣은 후 압축하여 사이버 캠퍼스에 제출. 4) 폴더 및 파일명 : CS06_과제번호_학번_이름 압축