*Tensorflow 란

Tensorflow는 Machine Intelligence를 위한 오픈소스 라이브러리이다.

구글이 만든 numerical computation을 위한 오픈소스 소프트웨어 라이브러리

data flow graphs를 사용할 수 있다는 특징


python으로 구현 가능

동일 코드를 CPU와 GPU에서 모두 사용 가능

데이터, 모델 병렬화

TensorBoard visualization


Tensor = Data

Flow = 흐름

즉 Tensorflow  = 데이터의 흐름



*Dataflow graph :

- Nodes in graph :

=> represent mathematical operations

- Edges :

=> represent the multidimensional data arrays

=> (tensor) communicated between them


*Basic Usage

- To use Tensorflow you need to understand how tensorflow:

=> represents computations as graphs

=> executes graphs in the context of Session

=> represents data as tensors

=> maintains state with variables

=> use feeds and fetches to get data into and out of arbitrary operations


*Tensorflow Basic

Session을 수행하여야 결과를 얻을 수 있다 :



*PlaceHolder 주기 :


1
"Mul: %i"%
cs




*Tensor Ranks, Shapes, and Types


a = [[1,2,3], [4,5,6], [7,8,9]]


a의 rank = 2

shape는 [3,3] 이다


1) Tensor Ranks

0  scalar  s=483

1  vector  v=[1.1 2.2, 3.3]

2  matrix  m=[[1,2,3], [4,5,6], [7,8,9]]

3  3-Tensor  t=[[[2],[4],[6]],[1],[2],[3]],[[5],[6],[7]]]

4  nTensor


2) Tensor Shapes

Rank Shape                    Dimension Number
0      []                                0-D

1      [D0]                            1-D

2      [D0, D1]                        2-D

3      [D0, D1, D2]                   3-D

n      [D0, D1, ..., Dn-1]            4-D



3) Tensor Data Type(아래 2가지를 가장 많이 사용함):

DT_FLOAT   tf.float32

DT_COUBLE  tf.float64

DT_INT32    tf.int32

DT_Complex64 tf.complex64




* Pycharm 설치


아래 링크에서 Community 버전 설치

https://www.jetbrains.com/pycharm/download/#section=windows







*Scipy 설치


>>> pip install scipy

>>> pip install pillow



*이미지 RGB 조정 소스 코드:


1) cat image(cat.jpg)를 다운로드 받아 jupiter workspace에 갖다 놓는다 :

2) 아래 코드를 실행시킨다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from scipy.misc import imread, imsave, imresize
 
# JPEG 이미지를 numpy 배열로 읽어들이기
img = imread('cat.jpg')
print(img.dtype, img.shape)  # 출력 "uint8 (400, 248, 3)"
 
# 각각의 색깔 채널을 다른 상수값으로 스칼라배함으로써
# 이미지의 색을 변화시킬 수 있습니다.
# 이미지의 shape는 (400, 248, 3)입니다;
# 여기에 shape가 (3,)인 배열 [1, 0.95, 0.9]를 곱합니다;
# numpy 브로드캐스팅에 의해 이 배열이 곱해지며 붉은색 채널은 변하지 않으며,
# 초록색, 파란색 채널에는 각각 0.95, 0.9가 곱해집니다
img_tinted = img * [10.50.9]
 
# 색변경 이미지를 300x300픽셀로 크기 조절.
img_tinted = imresize(img_tinted, (300300))
 
# 색변경 이미지를 디스크에 기록하기
imsave('cat_tinted.jpg', img_tinted)
cs

=> cat_tinted.jpg가 저장되었는지 확인


web 페이지에서 보여줄려면 형변환이 이루어져야 한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import numpy as np
from scipy.misc import imread, imresize
import matplotlib.pyplot as plt
 
img = imread('cat.jpg')
img_tinted = img * [10.50.5]
 
# 원본 이미지 나타내기
plt.subplot(121)
plt.imshow(img)
 
# 색변화된 이미지 나타내기
plt.subplot(122)
 
# imshow를 이용하며 주의할 점은 데이터의 자료형이
# uint8이 아니라면 이상한 결과를 보여줄 수도 있다는 것입니다.
# 그러므로 이미지를 나타내기 전에 명시적으로 자료형을 uint8로 형변환 해줍니다.
 
plt.imshow(np.uint8(img_tinted))
plt.show()
 
cs

imageio_skimage.ipynb

Scipy_test.ipynb





*배열연산 :

Dot 함수(행렬 곱이 아니라 요소별 곱)


*수학함수:




*Numpy 전치행열(Transpose) :



numpy array 'x' 에 대문자 T만 붙이면 된다 :
ex) x.T




*Numpy random 함수 사용 :


*Numpy Array 사용법:

1차원 배열 : 

x= [1,2,3,4]


2차원 배열:
x = [[1,2,3], [4,5,6]]


3차원 배열:

x = [[[[1,2,3][4,5,6],[7,8,9]],[[1,7,8],[3,5,6]]]



*Numpy Array 생성 방법








*Numpy Array 인덱싱 :

a = 1    2    3    4

5    6    7    8

9    10    11    12


위에서 파란색 음영 표시된 부분은 :


b = a[:2, 1:3]

        행 , 열

(상세설명 : 0부터 2행까지, 1열부터 3열 전까지)

b[0,0] = 77


위에서 2가 77로 바뀐다.




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import numpy as np
 
#Create the following rank 2 array with shape(3,4)
#[[1,2,3,4],
#[5,6,7,8],
#[9,10,11,12]]
 
= np.array([[1,2,3,4],[5,6,7,8], [9,10,11,12]])
 
 
#슬라이싱을 이용하여 첫 두행과 1열, 2열로 이루어진 부분배열을 만들어봅시다.
#b는 shape가 (2,2)인 배열이 됩니다.
#[[2,3],
#[6,7]]
= a[:2,1:3]
 
#슬라이딩된 배열은 원본 배열과 같은 데이터를 참조합니다. 즉 슬라이싱된 배열을 수정하면
#원본 배열 역시 수정됩니다.
print(a[0,1]) #출력 2
b[0,0= 77 #b[0,0]은 a[0,1]과 같은 데이터입니다.
print(a[0,1])
cs





*배열 슬라이싱 : 

a[1, :] = [5,6,7,8]

a[1:2, :] = [[5,6,7,8]]




사진




*불리언 배열 인덱싱 :

=> False 만 제외하고 모두 1줄로 출력한다. [3,4,5,6]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import numpy as np
a=np.array([[1,2],[3,4],[5,6]])
 
 
bool_idx=(a>2)
 
print(bool_idx)
#출력 [[false false]
#출력 [true true]
#출력 [true true]]
 
print (a[bool_idx])
 
#위에서 한 모든것을 한문장으로 할 수 있다
print(a[a>2])
 

cs



*Data 형변환 :




*Python If 사용법


if 조건문1:

  내용

elif  조건문2:

  내용

else:

   내용


*Python For 사용법 

for 변수 in 순서자료 :
  내용


ex) :

list = [1,2,3,4]
for i in list :
  print(i)






*Range로 반복 실행



*While 문 실행 :


*Random 숫자를 입력 받아 맞추는 소스코드 :



*함수 사용법


함수에는 Scope이 있다

- local, global, non-local


Recursion(재귀호출)

Lamda expression(람다 expression)

=> in-line 정의의 익명의 작은 함수

Generator 함수 : 사용자 정의 iterator 정의하는 함수

Decorator 함수 :  함수도 클래스로서 변수에 할당되거나 인자로서 정의될 수 있음


Ex)



*File 입출력 :

f= open('somefile.txt', 'w')

f.write('hello')

f.close()


f=open('somefile.txt', 'r')

f.read()


=> r 읽기

=> w 쓰기

=> a append

=> b binary

=> + read/write





*OOP 개념


- Class와 Object

=> Class = 설계도(사용자 정의 객체의 프로토타입)

=> Object = 기능+데이터


- 특징

=> encapsulation

=> polymorphism

=> inheritance




*Exception 처리 :







*데이터 분석용 주요 package


- iPython (python과 유사)

- numpy(수학분야)

- matplotlib(시각화)

- scipy(과학분야에서 활용)

- pandas(데이터 구조 및 다양한 분석방법 제공)


*Python 특징

-인터프리터 언어(소스코드를 바로 실행하는 환경)

- 객체지향적

- Interaction 한 언어

- Scripting언어 : 일반언어와 성능 /기능 차이가 별로 없음

- 수학적 개념이 녹아들어가 있음

- 비교적 간결, 다양한 알고리즘 적용 가능, 객체 지향개념 적용

- 배우기 쉽고, 가독성이 좋고, 유지보수성이 좋다.


*Python 종류 

- Python, Cpython은 같은것

  => C/C++ 로 작성

  => 2.7버전 : 2010년대 중반

  => 3.7 버전 : 2010년대 초반 이후 계속 발전

  => 2.7과 3.7 버전의 호환성이 깨져있다는 단점이 있다.

- Jython : JVM을 이용한 자바로 작성한 파이썬, 자바환경에서 사용

- IronPython : C#을 이용한 닷넷 환경으로 작성한 파이썬





*Python 활용 영역

- 시스템 유틸리티 작성

- GUI 프로그래밍

- C/C++과 연동 용이

- Web Programming

- 수치여난 프로그래밍

- 데이터베이스 프로그래밍

- 데이터 분석

- 사물 인터넷


*기본환경

- Python Interactive Shell - IDLE(GUI & CUI)

- 확장

=> PyDev with Eclipse

=> Pycharm

=> Komodo

=> Emacs

=> Vim

=> Text Mate

=> Gedit 등

- 웹브라우저 환경

=> IPython(3.0이상은 Jupiter)



*Python 설치 : 

https://www.python.org/downloads/release/python-365/


Windows x86-64 executable installer

로 설치



*Numpy 및 jupyter 설치


>>> pip install numpy

>>> pip install jupyter





*Jupyter Notebook 실행

>>> jupyter notebook




(Shift + Enter) 로 Run 실행 가능




*Python Data type :


- 수치형 (ex: 1, 2, -12)

- 문자형 (ex: "Hello", """long text""")

- List [1,2,3,4,5] , ['a', 'b', 'c', 'd', 'e']

=> x=[1,2,3,4]

     x[0] = 1

     x[-1] = 4

     x[1:-1] = 2, 3

     x[:3] = 처음부터 index 3까지

     x[3:]

- Tuple (1,2,3,4)

=> tuple은 immutable 하다(변경될 수 없다. 사용법은 list와 동일)

=> y=(1,2,3,4)

     y[0]

- Dictionary {kye:value, key2:value}

=>Z={"a": "apple", "b": "banana"}

     z["a"] = "apple"

     z["b"] = "banana"

 




*Python Function & Module 사용예제 :





+ Recent posts