6. TensorFlow
페이지 정보
작성자 관리자 댓글 2건 조회 5,460회 작성일 20-02-23 14:18본문
6. TensorFlow
TensorFlow
구글이 오픈소스로 공개한 머시러닝 라이브러리
- 딥러닝을 비롯한 여러 머신러닝에 사용되는 인기 있는 라이브러리
- 대규모 숫자 계산을 해주는 라이브러리
- 자체는 C++로 만들어진 라이브러리
- 일반적인 프로그래밍 방식과는 약간 다른 개념들을 포함한다.
[ 설치 과정 ]
python 3.6 버전을 철치한다.
tensorflow는 1.15버전 설치한다.
pip install tensorflow-cpu==1.15 # CPU
pip install tensorflow-gpu==1.15 # GPU
[ tensorflow 사용하기 ]
import tensorflow as tf
실습.
# -*- coding: utf-8 -*-
import tensorflow as tf
hello = tf.constant('Hello Tensorflow!!') # 상수 정의
print(hello)
결과.
오류 : Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
직역하면 당신의 CPU는 이 텐서플로우 바이너리가 사용하지 않은 명령어들을 지원한다. 정도가 될 것이다.
해결방법은 첫 번째는 무시하는 방법이고, 두번째는 다시 빌드(컴파일)하는 방법이다.
실제 응용에서는 빌드해야 겠지만, 처음 배울때는 무시하는 방법을 사용한다.
실습.
# -*- coding: utf-8 -*-
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # LOG_LEVEL를 2로 수정한다.
hello = tf.constant('Hello Tensorflow!!')
print(hello)
결과.
[tensorflow의 자료형]
- tensor : tensorflow에서 다양한 수학식을 계산하기 위한 가장 기본적이고
중요한 자료형
tensor의 형태는 배열과 비슷
Rank와 Shape라는 개념을 가지고 있다.
[ Rank 값 ]
0 : 스칼라
1 : 벡터
2 : 행렬
3 이상의 n : n-Tensor 또는 n차원 텐서
[ Shape ]
각 차원의 요소 개수를 의미, 텐서의 구조를 의미
[dtype]
해당 텐서에 담긴 요소들의 자료형
string, float, int 등이 올 수 있다.
실습.
# -*- coding: utf-8 -*-
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
a = tf.constant(10)
b = tf.constant(40)
c = a + b #c = tf.add(a, b)
print(a)
print(b)
print(c)
결과.
[tensorflow 프로그램 구조]
- 그래프 생성
- 그래프 실행
* 그래프 : tensor들의 연산 모음.
* 지연실행(lazy evaluation) : 함수형 프로그래밍에서 많이 사용
tensor와 tensor의 연산들을 미리 정의하여 그래프를 만들고,
필요할 때 연산을 실행하는 코드를 넣어 원하는 시점에 실제
연산을 수행하도록 하는 방식
* tensorflow 프로그래밍의 장점
모델 구성과 실행을 분리하여 프로그램을 깔끔하게 작성할 수 있다.
실습.
# -*- coding: utf-8 -*-
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
hello = tf.constant('Hello Tensorflow!!')
print(hello)
sess = tf.compat.v1.Session()
print(sess.run(hello))
sess.close()
결과.
실습.
# -*- coding: utf-8 -*-
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
# 그래프 생성
a = tf.constant(10)
b = tf.constant(40)
c = a + b #c = tf.add(a, b)
print(c)
# 그래프 실행
sess = tf.compat.v1.Session()
print(sess.run(c))
sess.close()
결과.
텐서플로 프로그래밍시 반드시 알아야 할 개념 두가지
# 플레이스홀더(placeholder) : 그래프에 사용할 입력값을 나중에 받기 위해 사용하는 매개변수(parameter)와 같은 개념
# 변수 : 그래프를 최적화하는 용도로 텐서플로가 학습한 결과를 갱신하기 위해 사용하는 것이 변수이다. (변수의 값들이 신경망의 성능을 좌우한다.)
실습.
# -*- coding: utf-8 -*-
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
# 플레이스홀더 정의하기
a = tf.compat.v1.placeholder(tf.int32, [3])
aa = tf.compat.v1.placeholder(tf.int32, [None])
# 배열을 2배로 하는 연산 정의하기
b = tf.constant(2)
x2 = a * b
bb = tf.constant(10)
x10 = aa * bb
sess = tf.compat.v1.Session()
#플레이스 홀더에 값을 넣고 실행하기
r1 = sess.run(x2, feed_dict={a:[1,2,3]})
r2 = sess.run(x2, feed_dict={a:[11,22,33]})
rr1 = sess.run(x10, feed_dict = {aa:[1,2,3,4]})
rr2 = sess.run(x10, feed_dict={aa:[1,2,3,4,5,6,7,8]})
print(r1)
print(r2)
print("========================")
print(rr1)
print(rr2)
결과.
실습.
# -*- coding: utf-8 -*-
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
# 상수를 정의하기(tf.Constant)
a = tf.constant(100)
b = tf.constant(120)
c = tf.constant(140)
# 변수를 정의하기(tf.Variable)
v = tf.Variable(0)
# 데이터 플로우 그래프 정의하기
calc_op = a + b + c
assign_op = tf.compat.v1.assign(v, calc_op)
sess = tf.compat.v1.Session()
sess.run(tf.global_variables_initializer()) # 세션 초기화
sess.run(assign_op)
print(sess.run(v))
결과.
실습.
# -*- coding: utf-8 -*-
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
X = [[1.0,2.0,3.0], [4.0,5.0,6.0]]
W = tf.Variable([[0.1, 1.0], [0.2,2.0], [0.3,3.0]])
print(X)
print("---------------------------")
print(W)
print("---------------------------")
res = tf.matmul(X, W)
print(res)
print("---------------------------")
sess = tf.compat.v1.Session()
sess.run(tf.compat.v1.global_variables_initializer())
print(sess.run(res))
sess.close()
결과.
댓글목록
관리자님의 댓글
관리자 작성일
추가설치 1.
Visual Studio 2015, 2017 및 2019용 Microsoft Visual C++ 재배포 가능 패키지
https://support.microsoft.com/ko-kr/help/2977003/the-latest-supported-visual-c-downloads
추가설치 2.
오류메세지.
tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_101.dll'; dlerror: cudart64_101.dll not found
CUDA Toolkit 설치(10.1)
https://developer.nvidia.com/cuda-10.1-download-archive-update2?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exelocal
추가설치3.
cuDNN (cudnn-10.1)설치하기
https://developer.nvidia.com/rdp/cudnn-archive
관리자님의 댓글
관리자 작성일
tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
https://blog.naver.com/PostView.nhn?blogId=complusblog&logNo=221237740617&redirect=Dlog&widgetTypeCall=true&directAccess=false