Coursera 강의 중 실습 내용

 

- Python Numpy 또는 R을 이용하기도 하지만, 문법이 더 투박하다고 하는데 아직까지는 의미를 정확히 이해하지는 못했다.

 

*기본 연산

 

* 논리 연산

  - %는 주석

  - ~= 같지 않다

  - && : AND

  - || : OR

  - xor : XOR

* Prompt 모양 바꾸기

* 변수 선언 및 할당

* 변수 출력

* Matrix 생성

* Vector 생성

* 기타

 

 

 

'딥러닝' 카테고리의 다른 글

Octave 실습정리 4  (0) 2021.03.16
Octave 실습 정리 2  (0) 2021.03.15
Mnist 학습 후 c#으로 실행하기  (0) 2020.03.10
KERAS - MNIST 소스 분석  (0) 2020.03.06
DCGAN 실습  (0) 2020.02.26

* 먼저 PC에 python, tensorflow GPU 버전, Cuda, cudnn이 설치되어 있어야 함

 나의 PC

 - Python : 3.7

 - Tensorflow : 1.15 (GPU버전)

 - cuda : 10.0

 - cudnn : 7.x (찾기 귀찮음...-_-)

 - Visual Studio 2017

 

1. 아래의 위치에서 다운받아 적당한 위치에 압축 해제를 한다.

 - https://github.com/sdg002/MNISTpng

 

2. training.zip, testing.zip 파일을 압축 해제 한다.

 * [소스폴더]\MNISTpng\training.zip -> [소스폴더]\MNISTpng\training\0 ~ 9

 * [소스폴더]\MNISTpng\testing.zip -> [소스폴더]\MNISTpng\testing\0 ~ 9

 

3. [소스폴더]\PythonTrainer\TrainMnistFromFolder.py 파일을 다음과 같이 수정한다.

 - mnist_train_path_full="..\\MNISTpng\\training\\*\\*.png"

 - mnist_test_path="..\\MNISTpng\\testing\\*\\*.png"

 

4. 파이썬으로 빌드해준다. (GPU 버전이 아니면 안되는듯)

 

5. 정상적으로 완료되면 [소스폴더]\PythonTrainer\Out 폴더에 Mnist_model.pb파일이 생성된다.

 

6. [소스폴더]에 MNISTpng.sln 파일을 Visual Stuido 2017로 오픈한다.

 

7. 솔루션 탐색기에서 ConsoleAppTester 프로젝트의 Program.cs 파일을 열어 다음과 같이 수정한 다음,

   ConsoleAppTester 프로젝트를 빌드한다.

 

 

8. 실행하려고 하면 실패하는데, 실행화일이 있는 디버그 폴더로 가 보면 libtensorflow.zip 파일이 있는데, 그 파일을 현재 폴더로 압축 해제 한다.

 * 압축 해제 하면 libtensorflow.dll 파일이 나온다.

 

9. 이제 실행해 보면 실행이 되어야 한다.

 

'딥러닝' 카테고리의 다른 글

Octave 실습 정리 2  (0) 2021.03.15
Octave 실습 정리 1  (0) 2021.03.15
KERAS - MNIST 소스 분석  (0) 2020.03.06
DCGAN 실습  (0) 2020.02.26
파이썬과 tensorflow 특정 버전으로 설치  (0) 2020.02.24

너무나도 흔하고 많이 봐왔던 입문 소스이지만, 강의도 참조하고 주석도 달아봄

 

 

1-1. 소스

# 0. 사용할 패키지 불러오기
from keras.utils import np_utils
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Activation

#1. 데이터셋 준비하기
#아마존에서 이미지 다운로드
(X_train, Y_train), (X_test, Y_test) = mnist.load_data()
# 하나의 데이터를 샘플이라고 하면
# 위의 변수들은 각각 60000x784, 60000x1, 10000x784, 10000x1의 크기로 각각이 1차원 배열로 되어 있다.
# 1) reshape을 해서 2차원 배열로 바꾸겠다.
# 2) 0~255의 정수값을 astype('float32')/255.0 으로 0~1사이의 값으로 바꾸겠다.(float32로 정규화)
#   사이즈는 더 커짐
#   딥러닝에 넣을 때, 정규화해서 넣어야 더 잘된다고 함
X_train = X_train.reshape(60000,784).astype('float32') / 255.0
X_test  = X_test.reshape(10000,784).astype('float32') / 255.0

# 라벨 값이 one-hot-encoding  으로 바뀜
# ex) 1 -> [0, 1, 0, 0, 0, 0, 0, 0, 0, 0]
#     7 -> [0, 0, 0, 0, 0, 0, 0, 1, 0, 0]
#     입력 1바치트 -> 출력 10바이트
Y_train = np_utils.to_categorical(Y_train)
Y_test  = np_utils.to_categorical(Y_test)

#2. 모델 구성하기
model = Sequential()
model.add(Dense(output_dim=64, input_dim=28*28, activation='relu'))
model.add(Dense(output_dim=10, activation='softmax'))
#소프트맥스 : 출력의 합이 1이다
'''
Categorical Cross Entropy
0.1    0
0.2    0
0.7    1 
'''

#3. 모델 엮기 : '네트워크가 학습할 준비가 되었습니다.'라는 의미
model.compile(loss='categorical_crossentropy', sgd='sgd', metrics=['accuracy'])

# batch_size : 몇문항 풀고 업데이트 할 거냐?
# ex) 문제가 100개고, batch_size가 10이면 10번의 업데이트
# epoch : 전제 문제를 반복 횟수
# 300000(training 갯수-60000 x epoch-5) / 32번 네트워크 갱신한다.
hist = model.fit(X_train,Y_train, nb_epoch=5, batch_size=32)

# 
# 데이터셋 : 훈련셋(모의고사 1~4회), 검증셋(5회), 시험셋(ex. 작년 시험문제) 
# 매 epoch마다 검증셋으로 검증한다.

 

1-2. 결과 (acc : 시험세트를 가지고 테스트한 정확률, loss : 시험세트로 테스트 한 loss)

더보기

#아래에서 acc (accuracy) : 시험셋으로 검사했을 때 정확률
60000/60000 [==============================] - 3s 57us/step - loss: 0.6694 - acc: 0.8300
Epoch 2/5
60000/60000 [==============================] - 3s 50us/step - loss: 0.3525 - acc: 0.9002
Epoch 3/5
60000/60000 [==============================] - 3s 48us/step - loss: 0.3068 - acc: 0.9135
Epoch 4/5
60000/60000 [==============================] - 3s 49us/step - loss: 0.2795 - acc: 0.9210
Epoch 5/5
60000/60000 [==============================] - 3s 49us/step - loss: 0.2590 - acc: 0.9261

 

2-1. 소스2

# 0. 사용할 패키지 불러오기
from keras.utils import np_utils
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Activation

# 1. 데이터셋 생성하기
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(60000, 784).astype('float32') / 255.0
x_test = x_test.reshape(10000, 784).astype('float32') / 255.0
y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)

#validation set
x_val = x_train[50000:60000] # <- 추가
y_val = y_train[50000:60000] # <- 추가
#train set
x_train = x_train[0:50000] # <- 추가
y_train = y_train[0:50000] # <- 추가


# 2. 모델 구성하기
model = Sequential()
model.add(Dense(output_dim=64, input_dim=28*28, activation='relu'))
model.add(Dense(output_dim=10, activation='softmax'))

# 3. 모델 학습과정 설정하기
model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])

# 4. 모델 학습시키기 : validation_data 추가
hist = model.fit(x_train, y_train, epochs=10, batch_size=32, validation_data=(x_val, y_val))

# 5. 학습과정 살펴보기
print('## training loss and acc ##')
print(hist.history['loss'])
print(hist.history['acc'])

# 6. 모델 평가하기
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=32)
print('## evaluation loss and_metrics ##')
print(loss_and_metrics)

# 7. 모델 사용하기
xhat = x_test[0:1]
#yhat = model.predict(xhat)
yhat = model.predict_classes(xhat)
print('## yhat ##')
print(yhat)

 

2-2. 결과 (val acc : validation 데이터를 가지고 구한 정확률, val loss : validation 데이터를 가지고 구한 loss)

더보기

Train on 50000 samples, validate on 10000 samples Epoch 1/10 50000/50000 [==============================] - 3s 66us/step - loss: 0.7451 - acc: 0.8064 - val_loss: 0.3779 - val_acc: 0.9016 Epoch 2/10 50000/50000 [==============================] - 3s 62us/step - loss: 0.3706 - acc: 0.8962 - val_loss: 0.3054 - val_acc: 0.9168 Epoch 3/10 50000/50000 [==============================] - 3s 65us/step - loss: 0.3170 - acc: 0.9106 - val_loss: 0.2756 - val_acc: 0.9236 Epoch 4/10 50000/50000 [==============================] - 3s 61us/step - loss: 0.2870 - acc: 0.9194 - val_loss: 0.2537 - val_acc: 0.9298 Epoch 5/10 50000/50000 [==============================] - 3s 59us/step - loss: 0.2650 - acc: 0.9253 - val_loss: 0.2371 - val_acc: 0.9337 Epoch 6/10 50000/50000 [==============================] - 3s 59us/step - loss: 0.2472 - acc: 0.9305 - val_loss: 0.2244 - val_acc: 0.9373 Epoch 7/10 50000/50000 [==============================] - 3s 58us/step - loss: 0.2325 - acc: 0.9345 - val_loss: 0.2125 - val_acc: 0.9416 Epoch 8/10 50000/50000 [==============================] - 3s 58us/step - loss: 0.2195 - acc: 0.9382 - val_loss: 0.2031 - val_acc: 0.9441 Epoch 9/10 50000/50000 [==============================] - 3s 60us/step - loss: 0.2083 - acc: 0.9412 - val_loss: 0.1954 - val_acc: 0.9476 Epoch 10/10 50000/50000 [==============================] - 3s 58us/step - loss: 0.1984 - acc: 0.9437 - val_loss: 0.1858 - val_acc: 0.9496 ## training loss and acc ## [0.7451425078868866, 0.3705984930920601, 0.3170429726314545, 0.2870378151583672, 0.26498337667942046, 0.24718738529920578, 0.23247317880630494, 0.21945956731557847, 0.20832648242115975, 0.19844862290382384] [0.80636, 0.89624, 0.91064, 0.91936, 0.9253, 0.9305, 0.93448, 0.93816, 0.94124, 0.94368] 10000/10000 [==============================] - 0s 23us/step ## evaluation loss and_metrics ## [0.19293292177915572, 0.9454] ## yhat ## [7]

 

* 참조

1. 데이터세트

  1) 훈련 세트(training set)

  2) 검증 세트

  3) 시험 세트

 

 

'딥러닝' 카테고리의 다른 글

Octave 실습 정리 1  (0) 2021.03.15
Mnist 학습 후 c#으로 실행하기  (0) 2020.03.10
DCGAN 실습  (0) 2020.02.26
파이썬과 tensorflow 특정 버전으로 설치  (0) 2020.02.24
tensorflow 2.0 설치  (1) 2020.02.05

아직까지 파이썬이나 텐서플로우 작성 기술은 미천하여, 여기저기 올려놓은 github 돌려보는 걸로.....ㅠㅠ

 

1. 아나콘다에서 env하나 만들어서-python : 3.7, tensorflow : 2.1.0- 활성화 한다. (생략)

 

2. https://github.com/tensorlayer/dcgan 에서 소스를 다운받아 압축해제한다.

  (내 PC에서는 D:\Study\GAN\dcgan-master\ )

 

3. https://drive.google.com/drive/folders/0B7EVK8r0v71peklHb0pGdDl6R28 에서 파일들을 받아 압축해제 한 다음 이미지 파일들을 data 폴더를 생성해서 이미지를 모두 넣는다.

 

4. 다음 명령어로 training 하면 다음과 같은 에러가 나타날 수 있다.

 > python train.py

5. 다음 명령어로 설치한다.

 > pip install tensorlayer

 

6. 4번의 명령을 다시 입력하면 뭔가 training 하면서 올라간다.

 

7. 결과는 img 폴더의 result.png 이미지이다.

 

 

----------------------------------------------------------------------------------------------------------------------

 

 

'딥러닝' 카테고리의 다른 글

Mnist 학습 후 c#으로 실행하기  (0) 2020.03.10
KERAS - MNIST 소스 분석  (0) 2020.03.06
파이썬과 tensorflow 특정 버전으로 설치  (0) 2020.02.24
tensorflow 2.0 설치  (1) 2020.02.05
딥러닝 실습(1) - 선형회귀  (0) 2020.01.29

1. anaconda 설치 후 파이썬 3.7을 설치한 가상환경 생성

 

conda create -n test python==3.7

 

 

2.활성화

 

conda activate test

 

 

3. tensorflow 1.15.0 설치(버전 지정 안하고 그냥 설치하면 2.0이 설치됨)

 

pip install --ignore-installed --upgrade tensorflow==1.15.0

'딥러닝' 카테고리의 다른 글

KERAS - MNIST 소스 분석  (0) 2020.03.06
DCGAN 실습  (0) 2020.02.26
tensorflow 2.0 설치  (1) 2020.02.05
딥러닝 실습(1) - 선형회귀  (0) 2020.01.29
아나콘다를 이용한 가상env 생성/활성화/삭제  (0) 2019.07.28

현재 tensorflow 2.1까지 나온 상태이고, tutorial 따라해 볼려고 2.0을 설치하려고 함.

 

* Visual Studio와 cuda, cudnn은 설치되어 있음

(tensorflow 2.0 -> cuda 10.0, tensorflow 2.1 -> cuda 10.1 이 필요한 것 같음)

 

1.  conda create -n tf2_gpu python tensorflow-gpu==2.0

2. 엔터를 쳐서 설치를 진행한다.

 

3. 파이썬 실행 후 텐서플로우 버전을 확인한다

* 나의 경우 h5py관련 오류가 난다면

(h5py is running against HDF5 1.10.5 when it was built against 1.10.4, this may cause problems......)

 

다음의 명령을 통해 재설치하면 된다.

pip install h5py --upgrade --no-dependencies --force

중학교 때 배웠던 직선의 방정식

x값 1개, y값 1개씩 있을 경우

import tensorflow as tf

#x,y 데이터 값
data = [[2,81], [4,93], [6, 91], [8, 97]]
x_data = [x_row[0] for x_row in data]
y_data = [y_row[1] for y_row in data]

print(x_data)
print(y_data)

#변수 선언
#기울기 : a - 0~10 사이의 임의의 값
#y 절편 : b - 0~100 사이의 임의의 값
#seed? 
a = tf.Variable(tf.random_uniform([1], 0, 10, dtype=tf.float64, seed = 0))
b = tf.Variable(tf.random_uniform([1], 0, 100, dtype=tf.float64, seed = 0))

#그래프 선언
#y에 대한 일차 방정식
y = a * x_data +  b

#텐서플로우 rmse(Root Mean Square Error, 평균 제곱근 편차) 함수
rmse = tf.sqrt(tf.reduce_mean(tf.square(y - y_data)))

learning_rate = 0.01
gradient_descent = tf.train.GradientDescentOptimizer(learning_rate).minimize(rmse)

with tf.Session() as sess:
    #변수 초기화
    sess.run(tf.global_variables_initializer())
    #2001번 실행
    for step in range(10001):
        sess.run(gradient_descent)
        #100번마다 결과 출력
        if step % 100 == 0:
            print("Epoch : %.f, RMSE = %.04f, 기울기 a = %.4f, y 절편 b = %.4f" % (step, sess.run(rmse), sess.run(a), sess.run(b)))

 

기울기는 2.3, y 절편은 79에 가까워짐

 

 

아직까지 python 환경에 적응하지 못하면서도 재밌다고 느끼는 1인으로

 

깊고 심오한 내용이 아니라 알고 있다고 생각들다가도, 명령어 못 찾아서 구글링으로 시간을 낭비하는 것을 더이상 막고자, 걍 기록 차원에서(이전 글들도 그렇지만...ㅎㅎㅎ) 남김

 

아나콘다를 설치했다는 가정하에..

참고로, 내 노트북에는 e:\python\Anaconda3에 설치되어 있음

1. tensorflow1 이라는 이름으로 가상환경 생성

-> conda create --name tensorflow1

또는

-> conda create -n tensorflow1

 

2. 1번에서 생성한 tensorflow1 가상환경 활성화

-> activate tensorflow1

3. 가상환경 비활성화

-> conda deactivate

 

4. 가상환경 목록보기

-> conda info --envs

 

 

 

 

 

1. 윈도우 키 > Jupyter Notebook 실행

2. 브라우저가 나타나면서 아래와 같은 화면이 보이는데, 우측의 콤보 New > Python3 를 실행한다.

3. 새로운 창이 나타나면 다음과 같이 간단한 코딩 입력 후 Run 버튼 선택

4. 다음과 같이 Hello World 문구가 나타나면 성공

5. cmd 명령으로 command 창을 실행시킨 다음 "pip install tensorflow" 명령을 실행시켜 텐서플로우를 설치한다.

[설치중...]

6. 3번에서 입력했던 창에 "import tensorflow as tf" 문구를 위에다 추가한 다음 Run 버튼을 선택한다.

컴파일 오류가 난다. numpy 쪽에 뭔가 문제가 있는 듯...

7. 5번의 command 창에서 "pip install numpy --upgrade" 명령을 실행시킨다.

1.15.4 -> 1.16.2로 업그레이드 되었다.

8. 6번의 코드를 다시 실행시켜본다.

Hello World 문구가 보인다면 텐서플로우가 제대로 설치된 것이다

작년 대망의 꿈을 품고 시작한 딥러닝 공부...

 

공부라고 해봐야 웹에서 이것저것 검색하고 따라해보고...

 

뭔가 될 것 같긴 한데 되는건 없고...

 

잠정 휴업으로 들어간지 어언 몇달...

 

다시 해볼라고 설치부터 해 봅니다.

 

1. 아나콘다를 다운로드 한다.( https://www.anaconda.com/distribution/ )

 

사이트 접속 후 스크롤로 내리다가 위 페이지에서 [Windows 클릭] > [Python 3.7 Version 클릭] 하면 다운로드

2. 다운 받은 파일을 실행하여 설치를 시작한다.

 Next 버튼을 눌러서 다음으로
동의함 버튼 선택
기본값으로 Just Me 선택된 대로 Next
C드라이브가 용량이 별로 없는 관계로 E드라이브로
Anaconda 경로를 환경 변수 PATH에 넣어줌 체크
설치를 시작...
다 되었으면 Next 버튼 선택
이놈은 Skip
설명들을 보고 싶지 않으니 체크 해제 후 Finish 버튼 선택

3. Win 키 > Jupyter Notebook 실행 하면 다음과 같이 브라우저가 나타나는데, 우측의 New > Python3를 선택시 새 창이 나타남

 

+ Recent posts