1. 파일에서 학습할 데이터를 가져옵니다.

2017/10/25 - [TensorFlow&Python] - (TensorFlow) 파일에서 (학습할)데이터 읽어오기

import numpy as np
import tensorflow as tf

xy = np.loadtxt('testData.csv',delimiter=',',dtype=np.float32)
x_data = xy[:, 0:-1]
y_data = xy[:, [-1]]

print(x_data.shape, x_data, len(x_data))
print(y_data.shape, y_data, len(y_data))

 

2. Node 를 구성합니다. (학습할 데이터의 구성을 정의합니다.)

// n 개의 3가지 숫자값을 가지는 구성의 x
X = tf.placeholder(tf.float32, shape=[None, 3])
// 1 개의 결과 숫자값을 가지는 구성의 y
Y = tf.placeholder(tf.float32, shape=[None, 1])

// 3개가 들어가서 1개의 결과로 나온다.
W = tf.Variable(tf.random_normal([3, 1]), name='weight')
// 1개의 출력값을 갖는다.
b = tf.Variable(tf.random_normal([1]), name='bias')

 

3. 학습을 어떻게 할것인지 정의합니다.

// 가설을 세우고
hypothesis = tf.matmul(X, W) + b
// 비용을 계산
cost = tf.reduce_mean(tf.square(hypothesis - Y))

// optimizer를 생성하여 비용(cost) 이 적은 방향으로 학습시키도록 정의
optimizer = tf.train.GradientDescentOptimizer(learning_rate=1e-5)
train = optimizer.minimize(cost)

 

4. 학습합니다.

// session 을 가져와 변수 초기화
sess = tf.Session()
sess.run(tf.global_variables_initializer())

// 2001 번 루프 돌면서 학습을 시킵니다.
// feed_dict 에 학습된 결과가 저장됩니다.
for step in range(2001):
    cost_val, hy_val, _ = sess.run(
        [cost, hypothesis, train], feed_dict={X: x_data, Y: y_data})
    if step % 10 == 0:
        print(step, "Cost: ", cost_val, "\nPrediction:\n", hy_val)

 

5. 학습한결과로 예측해봅니다.

// 학습한 내용을 가지고 결과를 예측해봅니다. (100,70,101) 인 경우 결과를 예측합니다.
print("Your score will be ", sess.run(
    hypothesis, feed_dict={X: [[100, 70, 101]]}))

Your score will be [[ 170.03196716]]

// [60, 70, 110], [90, 100, 80] 에대한 결과를 예측해 봅니다. 2가지 조건을 넣었으므로 두가지 예측 결과가 나타납니다.
print("Other scores will be ", sess.run(hypothesis,
                                        feed_dict={X: [[60, 70, 110], [90, 100, 80]]}))

Other scores will be  [[ 149.67153931]
 [ 188.85415649]]

 

 

 

 

전체코드
import numpy as np
import tensorflow as tf

xy = np.loadtxt('testData.csv',delimiter=',',dtype=np.float32)
x_data = xy[:, 0:-1]
y_data = xy[:, [-1]] 

print(x_data.shape, x_data, len(x_data))
print(y_data.shape, y_data, len(y_data))

X = tf.placeholder(tf.float32, shape=[None, 3])
Y = tf.placeholder(tf.float32, shape=[None, 1])

W = tf.Variable(tf.random_normal([3, 1]), name='weight')
b = tf.Variable(tf.random_normal([1]), name='bias')

hypothesis = tf.matmul(X, W) + b
cost = tf.reduce_mean(tf.square(hypothesis - Y))

optimizer = tf.train.GradientDescentOptimizer(learning_rate=1e-5)
train = optimizer.minimize(cost)

sess = tf.Session()
sess.run(tf.global_variables_initializer())
for step in range(2001):
    cost_val, hy_val, _ = sess.run(
        [cost, hypothesis, train], feed_dict={X: x_data, Y: y_data})
    if step % 10 == 0:
        print(step, "Cost: ", cost_val, "\nPrediction:\n", hy_val)

print("Your score will be ", sess.run(hypothesis, feed_dict={X: [[100, 70, 101]]}))

print("Other scores will be ", sess.run(hypothesis,feed_dict={X: [[60, 70, 110], [90, 100, 80]]}))

 

 

 

여러 로직을 처리하다보면 입력값 즉, 학습할 데이터를 넣을때

값이 많은 경우 코드로 입력하기는 힘듭니다.

그래서 파일을 이용하여 학습할 데이터를 넣는 과정을 소개합니다.

(Sung Kim 교수님의 동영상을 참고 했습니다. https://www.youtube.com/watch?v=o2q4QNnoShY)

 

#E1,E2,E3,R
73,80,75,152
93,88,93,185
89,91,90,180
96,98,100,196
73,66,70,142
53,45,55,101

우선 위 내용으로 (학습데이터) csv 파일을 하나 만듭니다.

파일 내용은 아시겠지만 E1,E2,E3 대한 결과값(R)입니다.

testData.csv

만약 실제 코드로 한다면 아래 처럼 지저분해집니다.

x_data = [[73., 80., 75.],
          [93., 88., 93.],
          [89., 91., 90.],
          [96., 98., 100.],
          [73., 66., 70.]]
y_data = [[152.],
          [185.],
          [180.],
          [196.],
          [142.]]

 

먼저 numpy 를 import 합니다. (숫자를 다룰때 사용하는 라이브러리 입니다.)

import numpy as np

numpy 에 loadtxt 라는 함수가 있는데 이 함수가 파일을 읽어오게끔 해줍니다.

xy = np.loadtxt('testData.csv',delimiter=',',dtype=np.float32)

loadtxt(파일이름, 구분자, 타입) 형태가 됩니다.

이제 변수에 데이터를 넣습니다.

x_data = xy[:, 0:-1]

x_data 는 E1,E2,E3 데이터로 위 표현은 0 에서 부터 마지막 -1 값까지(마지막 컬럼?을 제외한 값)만 읽으라는 뜻입니다.

y_data = xy[:, [-1]]

y_data 는 R 값으로 위표현은 마지막 값만을 읽으라는 뜻입니다.

이제 출력해 봅니다.

print(x_data.shape, x_data, len(x_data))
print(y_data.shape, y_data, len(y_data))

위 명령을 수행하면 행렬의 구성, 데이터, 길이 를 출력하게됩니다.

import numpy as np
xy = np.loadtxt('testData.csv',delimiter=',',dtype=np.float32)
x_data = xy[:, 0:-1]
y_data = xy[:, [-1]]
print(x_data.shape, x_data, len(x_data))
print(y_data.shape, y_data, len(y_data))

TensorBoard는 TensorFlow에 기록된 로그를 그래프로 시각화시켜서 보여주는 도구라고 합니다.

텐서보드는 위 언급한대로 로그 파일이 존재해야 볼수가 있습니다.

로그파일을 만들어보겠습니다.

쥬피터(Juypter를 실행합니다.

파이썬 파일 하나 만들고 아래 처럼 코딩해봅니다.

import tensorflow as tf
a = tf.constant(3.0)
b = tf.constant(5.0)
c = a * b

# tensorboard에 point라는 이름으로 표시됨
c_summary = tf.summary.scalar('point', c)
merged = tf.summary.merge_all()

with tf.Session() as sess:
    writer = tf.summary.FileWriter('./board/5Step', sess.graph)
    result = sess.run([merged])
    sess.run(tf.global_variables_initializer())
    writer.add_summary(result[0])

 

실행하게 되면 5Step 로그 폴더가 하나 생겨지게 됩니다.

각 PC 환경에 따라 다르겠지만 전 C:\Users\kjun\Documents\Test\board 이쪽에 폴더가 만들어졌습니다.

 

이제 텐서 보드를 실행할 준비는 마쳤습니다.

 

cmd(명령프롬프트) 를 관리자 모드로 실행하여 아래 명령어를 입력합니다.

tensorboard --logdir=C:\Users\kjun\Documents\Test\board\5step

그러면 아래 처럼 명령이 실행되면서 사이트 주소가 하나 보입니다.

Default 로는 6006 포트를 사용하는 주소를 사용합니다. (http://kjunMainPC:6006)

아래처럼 뒤에 포트를 명시해 주면 원하는 포트로 변경이 가능합니다.

tensorboard --logdir=C:\Users\kjun\Documents\Test\board\5step --port=8008

위 사이트주소를 크롬에서 실행해 봅니다. (Explorer 에서는 제대로 동작이 안되더군요;)

위와 같이 시각화면 로그 파일을 확인해 볼수 있습니다.

더 상세한 사항은 아래 참고 사이트를 확인해 주세요~

 

참고

http://pythonkim.tistory.com/39

강의동영상

https://goo.gl/2cqKLz

 

깃허브

https://github.com/hunkim

 

http://byteofpython-korean.sourceforge.net/byte_of_python.html#first_steps

체계적으로 설명이 잘되어있다.

(편집기 설치하는과정까지도 나온다.)

네이버클라우드플랫폼을 이전에 무료 기간때 사용하고

유료전환 후 무료크래딧으로 사용중.. 아니 방치 중이었습니다.

구글 클라우드 플랫폼을 사용중이라 무료 크래딧을 썩히고 있던차

TensorFlow 가 설치된  CentOS 설치가 가능하다고 하여 설치해 보았습니다.

 

https://console.ncloud.com/dashboard 

위 링크로 로 접근하면 아래와 같은 화면이 나옵니다. (가입 및 로그인은 필수)

여기서 우측의 Server 를 클릭하면 아래와 같이 서버 관리 화면이 나타납니다.

(현재 전 이미 Tensorflow-centos  서버가 추가된 상태입니다.)

위 그림에서 + 서버 생성 을 클릭하면 아래와 같이 생성가능한 서버 목록 들이 나열되고

여기서 tensorflow-centos-7.3-64 를 선택합니다.

선택하면 아래와 같은 팝업이 나타납니다.

Jupyter notebook 을 바로 쓸수있는게 최대 장점 같습니다.

또한 여러 라이브러리들도 자동으로 설치가 됩니다.

(일단 저희가 할건 비번을 바꾸는게 제일 중요한 일인것 같네요)

위 내용 전문입니다.

서버에 TensorFlow 등 머신 러닝 관련 패키지가 설치되어 제공됩니다.

TensorFlow 서버 설치 가이드에 따라 아래 2~4번을 반드시 수행해 주십시오(가이드 바로가기)

선택하신 상품은 tensorflow, jupyter, python 등의 머신 러닝 패키지 설치만 지원되며,
그 이외에 별도의 기능 제공 및 분석 관련 기술 지원은 하지 않습니다.

jupyter notebook 사용을 위해서는 서버 생성 후에 추가로 공인IP를 신청하고 서버에 할당해야 하며,
서버 생성시 선택한 ACG에 8888 포트를 추가해야 합니다.

초기 설정된 PASSWORD는 다음에 입력할 서버 이름과 동일하며, 보안 침해 방지를 위해 반드시 변경해 주시기 바랍니다.

모든 작업이 완료되면 웹 브라우저로 공인IP:8888로 jupyter notebook 접속이 가능합니다.

주요 설치 라이브러리 목록:
tensorflow
jupyter
Keras
python
Gensim
numpy
Pytorch
scikit-learn
Theano
scipy
seaborn
sympy

혹시 몰라 가이드 가기 를 클릭하니 상세히 설명이 나와있습니다.

http://docs.ncloud.com/ko/tensorflow/tensorflow-1-1.html

이제 본론으로 와서 목록 선택을 완료하고 다음을 클릭합니다.

아래그림과 같이 서버타입등을 설정할 수 있습니다.

그 이후론 인증키 설정과 방화벽 설정이 있는데 전 이미 있던걸 사용해서 따로 캡쳐하지 않았습니다.

인증키 설정과 방화벽 설정은 어렵지 않습니다.^^;

(참고로 ACG 관련해서는 http://kjcoder.tistory.com/263 포스팅을 참고해 주세요.)

모든 설정이 끝나면 아래 처럼 서버 추가가 완료되고 조금 기다려야합니다.

전 한 10분 정도 기다리니 서버추가가 완료되어 동작중으로 바뀌더군요..

앞서 방화벽 설정에서 이미 하신분들도 있겠지만 Juyter Notebook 를 사용하려면 8888 port 를 열어줘야합니다.

전 기존에 사용하던걸 그대로 사용해서 따로 8888 포트를 추가해 주었습니다.

아래 그림과 같이 ACG 메뉴로 접근하여 규칙을 선택하고 ACG 설정 버튼을 누릅니다.

(목록이 없는 분들은 ACG  생성해 주세요 => http://kjcoder.tistory.com/263 참고 )

아래 그림과 같이 나오고 프로토콜 TCP , 접근소스 0.0.0.0/0 , 허용포트 8888 을 넣고 추가 버튼을 클릭 한 후 하단의 적용버튼을 클릭합니다.

(아래그림을 보시면 아시겠지만 이미 8888 포트를 추가한 후 캡쳐한 내용입니다.)

이제 접속해 봅니다.

공인 IP 를 신청을 하고 공인 IP 에 8888 로 연결해 봅니다.

123.123.123.123:8888 이런식이 되겠죠

접속하게되면 비번을 물어보는데 비번은 앞서 만든 서버명 입니다.

비번이 맞으면 아래그림과 같이 jupyter notebook 가 실행되어 나타납니다.

친절하게도 대표적으로 사용되는 몇가지 샘플파일들이 있습니다.

(한글이 왜 저렇게 나오는지는 모르겠네요;;)

1. Numpy 를 사용한 벡터와 행렬연산

2. Pandas 를 활용한 데이터 탐색

3. Matplotlib, Seaborn 을 사용한 시각화

4. NLTK 자연어처리패키지 소개

5. Scikit-Learn 을 사용한 ML

6. Keras 를 사용한 딥러닝

7. TensorFlow MNIST

아래는 샘플파일을 열어본건데 단순히 코드만 있는게 아니라 상세한 설명까지 있습니다. Wow!

기초 다지기엔 좋은 예제들인것 같습니다.

CNN 을 해보려고 하는데 MNIST set 을 가지고 하여

set 을 다운하는 방법을 설명합니다.

cmd 를 관리자권한으로 실행하고

python 을 실행하여

아래 코드를 실행합니다.

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)

 

아래 내용의 코딩이 있어 실행해 봤다.

작업시간이 조금 걸린다. 그래픽카드가 1050ti 라서 ㅜㅠ

코드내용

import tensorflow as tf

import numpy as np

x_data = np.random.rand(100).astype(np.float32)
y_data = x_data*0.1+0.3


W = tf.Variable(tf.random_uniform([1],-1.0,1.0))
b = tf.Variable(tf.zeros([1]))
y = W* x_data + b


loss = tf.reduce_mean(tf.square(y-y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)


init = tf.global_variables_initializer()


sess = tf.Session()
sess.run(init)

for step in range(201):
    sess.run(train)
    if step % 20 == 0:
        print(step, sess.run(W), sess.run(b))

참고.. (주석)

Cuda 및 Tensorflow 프로그램을 실행하기 위해 Tensorflow-gpu 버전을 설치하는 과정을 소개합니다.

우선 가장 중요한건 모두 관리자 권한으로 실행하여 설치해야합니다.

또한 Python 3.5 버전이 제대로 동작합니다.

전 Windows 10 pro 에 Visual Studio 2017 과 Python 3.6 이 설치된 상태에서 진행했습니다.

 

1. Anaconda 4.2.0 설치

https://www.anaconda.com/download/

반드시 Python 3.5 기반으로 된 Anaconda 4.2.0 를 설치해야합니다.

위 링크를 가보면 아시겠지만 최신버전은 Python 3.6 을 기반으로 하여 Anaconda  5.0 버전까지 나온 상태입니다.

최신버전을 깔지 마세요!! (최신버전을 깔고 파이썬 3.5 를 설치하여 환경을 구성하는 방법도 있다고 하긴합니다... 만.. 안할래요..)

아래 링크로 들어가서

https://repo.continuum.io/archive/

Anaconda3-4.2.0-Windows-x86_64.exe 파일을 다운 받습니다.

다운 받은 파일을 관리자 권한으로 실행합니다.

아래는 설치 과정입니다. 특별한건 없습니다.

 

2. cuda_8.0.61_win10 설치

아래 페이지로 이동하여 cuda_8.0.61_win10 을 다운 받습니다.

자신의 운영체제에 맞게 선택한 후 다운로드 합니다.

(현재 최신버전이 바뀌어있는데..  cuda_8.0.61_win10 버전은 요쳥하시면 메일로 보내드리겠습니다.)

https://developer.nvidia.com/cuda-downloads

다운받은 파일을 관리자 권한으로 실행합니다.

요것도 특별한거 없이 설치하면 됩니다.

그래픽카드 드라이버 등을 새로 깔기때문에 모니터까 껐다 켜졌다 합니다.

(참고로 전 1050 Ti 를 사용하고 있습니다.)

 

[아래그림] visual studio 2015 가 설치되어있는 경우

또한 Cuda 프로그램은 설치 후 재설치를 하게되면 설치 중간에 먹통이 되더군요; (화면이 시꺼메지면서 먹통이 됩니다.;;;

다행히 재부팅하면 되긴하는데 이렇게 되면 먼가좀.. 꺼름직하므로 안된다고 재설치하는건 피하시길..

 

3. cudnn-8.0-windows10-x64-v5.1 다운 및 복붙하기

아래 링크로 들어가 5.1 버전을 다운 받습니다.

https://developer.nvidia.com/cudnn

위 그림에서 Download 를 선택하면

아래 그림과 같이 회원가입을 필요로 합니다.

가입 후 로그인합니다.

아래 그림처럼 멀 물어보는데 아무거나 선택하세요;;

Agree... 체크합니다.

체크하면 아래쪽으로 쭉 버전별 라이브러리가 나오는데 여기서 아래그림과 같이 5.1 버전을 다운 받습니다.

압축파일이 하나 받아지는데 이를 풀면 아래와 같은 파일이 보입니다.

bin, include, lib 폴더를 복사하고

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0 위치에 붙여넣기합니다.

 

4. Tensorflow-GPU 설치

cmd 창을 관리자권한으로 실행합니다.

pip install tensorflow-gpu

위 명령어를 실행하면 아래 그림과 같이 설치파일 다운 및 설치가 진행됩니다.

마지막에 초록색으로 pip 버전을 upgrade 하라고 나오는데 해야합니다.

python -m pip install --upgrade pip

이제 python 을 실행하여 편집기로 아래 구문을 실행해 봅니다.

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

참고로 import tensorflow as tf 에서 에러가 발생된다면 설치가 제대로 안된것 입니다. ㅜㅠ

아래 그림을 보시면 아시겠지만

sess = tf.Session()

위 명령어를 실행할때 그래픽카드를 인지하는 걸 알 수 있습니다.

 

5. Jupyter 로 실행

Anaconda 에는 Jupyter Notebook 에디터가 있습니다.

이를 관리자 권한으로 실행합니다.

아래와 같은 그림이 나오는데 우측 상단의 New 를 선택해 Folder 를 하나만듭니다.

이름이 이상하게 되어있는데 Untitled Folder 를 체크하면 위쪽에 Rename 버튼이 활성화 됩니다.

버튼을 눌러 이름을 변경하고 폴더로 진입합니다.

진입한 후New 에서 Python [default] 를 선택합니다.

선택하게되면 코딩이 가능한 에디터 모양이 나옵니다.

이를 이용하여 아래 코드를 실행해 봅니다.

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

 

a = tf.constant(55)
b = tf.constant(37)
print(sess.run(a+b))

 

실행버튼은 Play 버튼을 누르면 결과가 나타납니다.

 

위와 같이 결과가 나오면 모든 설정이 완료된 것입니다.

 

참고

http://goodtogreate.tistory.com/entry/GPU-TensorFlow-on-Window-10-TensorFlow-GPU%EB%B2%84%EC%A0%84-%EC%9C%88%EB%8F%84%EC%9A%B010-%EC%84%A4%EC%B9%98

http://daeson.tistory.com/276

https://brunch.co.kr/@mapthecity/15

http://mataeoh.egloos.com/7052271

http://www.gurobi.com/downloads/get-anaconda

실행오류 관련

https://github.com/tensorflow/tensorflow/issues/9033

https://www.microsoft.com/ko-kr/download/confirmation.aspx?id=52685

 

* 파이썬 3.5 아나콘다를 사용하는 방법.

파이썬 3.5에서 아나콘다를 사용하는 방법에는 세 가지가 있습니다.
• 최신 버전의 Anaconda를 다운로드 한 다음 Python 3.5 환경을 만드는 것이 좋습니다.
• 또는 최신 버전의 Anaconda를 다운로드하고이 명령을 실행하여 루트 환경에 Python 3.5를 설치하십시오. conda install python = 3.5
• 또는 Python 3.5가 기본적으로 포함 된 최신 Anaconda 인 Anaconda 4.2.0을 다운로드하십시오. 우리의 아카이브에서 다운로드 할 수 있습니다. 플랫폼에 맞는 버전 4.2.0을 찾을 때까지 페이지를 아래로 스크롤하십시오.

2017/05/10 - [RaspberryPI&Python] - (Python) Visual Studio 에서 Python 코딩하기 - 환경설정

1. 비쥬얼 스튜디오에서 새프로젝트를 만든다.

다른언어 - Python - Python Application

위 항목들을 보면 알겠지만 다양한 프로젝트를 생성할수가 있다.

만들면 아래처럼 프로젝트가 만들어지게된다.

 

2. 코드를 작성하기 전

인텔리센스를 제공하여 닷넷처럼 첫단어를 치면 해당 단어로 시작하는 관련된 것들이 쭉 나열된다.

또한 snippet (스니펫) 기능도 지원되어 tab 을 이용해 자동으로 코드를 완성시킬 수 있다.

예로 main 을 치고 tab 을 누르면 아래처럼 자동으로 코드가 작성된다.

 

3. 실제 코드를 작성해보자.

PythonApplication1.py 이 파일이 코드를 작성할 곳이다.

아래 내용을 작성한다.

from math import sin, cos, radians
import sys


def make_dot_string(x):
    return ' '*int(10*cos(radians(x))+10) + 'o'

assert make_dot_string(90) == '          o'
assert make_dot_string(180) == 'o'

def main():
    for i in range(10000000):
        s = make_dot_string(i)
        print(s)

if __name__ == "__main__":
    sys.exit(int(main() or 0)) 

위 내용은 이해할 필요 없이 아래 실행 결과를 보면 된다.

F5 로 실행하게 되면 아래 처럼 결과가 나타난다.

이제 Python 으로 코딩이 가능해 졌다 Python 기초부터 배워 사용하면 되겠다.

 

* 아래는 위 예제 파일

PythonApplication1.zip

 

+ Recent posts

티스토리 툴바