일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 홍콩과기대김성훈교수
- MSE
- Hypothesis
- AI
- 파이썬
- tensorflow
- classifier
- Deep learning
- 알고리즘
- DynamicProgramming
- Cross entropy
- Python
- DP
- 자연어처리
- 머신러닝 기초
- rnn
- pytorch
- machine learning
- 파이토치
- Natural Language Processing with PyTorch
- 딥러닝
- Softmax
- 강의자료
- 정렬
- 백준
- 스택
- 강의정리
- BAEKJOON
- loss
- 머신러닝
- Today
- Total
개발자의시작
[머신러닝][딥러닝] TensorFlow 설치 및 기본 동작 1.1 본문
이 글은 홍콩과기대 김성훈 교수님의 강의를 개인적으로 정리한 글입니다.
강의 영상 및 강의자료는 아래의 링크에서 확인하실 수 있습니다.
링크 : http://hunkim.github.io/ml/
TensorFlow 설치는 아래의 링크에서 할 수 있습니다.
링크 : https://www.tensorflow.org/
텐서 플로우
TensorFlow is an open source software library for numerical computation using data flow graphs.
데이터 플로우 그래프를 사용하여 수치 계산을 진행하는 라이브러리!
Data Flow Graph?
데이터 플로우 그래프는 말 그대로 그래프를 의미하며, 각각의 노드는 하나의 operation이다. 엣지는 다차원의 데이터 배열이다.(Tensor라고도 함) 데이터 플로우 그래프를 통해 연산이나 작업 등을 수행할 수 있다. 그래프를 지나면서 특정 연산이나 작업 등을 수행해 나가는 것이 텐서 플로우이다.
텐서 플로우 홈페이지에서 설치를 완료하고 위와 같은 코드를 입력하여 설치가 완료되었는지 확인할 수 있다.
Hello TensorFlow!
1
2
3
|
- tf.constant()를 통해 문자열이 담긴 하나의 노드를 생성
- computational graph를 실행하기 위해서는 Session을 만들고 sess.run() 과 같이 실행해야 한다.
파이썬에서 출력 결과 문자열 앞에 b가 붙는 경우가 있는데 이는 Bytes string임을 의미함
Computational Graph
더하기 연산을 위한 그래프는 위와 같이 생성된다. 노드 b에 있는 값과 노드 a에 있는 값을 더하는 연산을 의미한다.
1
2
3
4
5
|
|
node1과 node2를 위와 같이 생성한다. node3은 단순히 node1과 node2를 더하는 연산을 수행하는 노드이며,
node3= node1+node2 와 같이 작성해도 무방하다.
node1, node2 그리고 node3을 출력해본 결과이다. 출력 결과 값이 나오는 것이 아닌 어떤 텐서(Tensor)인지에 대한 정보를 출력한다. 따라서 결과를 출력하기 위해서는 위에서 언급했던 것과 같이 Session()을 생성하고 sess.run을 통해 실행시켜야 한다.
1
2
3
4
5
|
sess = tf.Session()
|
실행결과
TensorFlow의 매커니즘은 다음과 같이 정리할 수 있다.
1) 텐서 플로우 툴을 이용해서 그래프 빌드
2) sess.run(op)를 이용해 그래프를 실행
3) 그래프 속에 있는 값들이 업데이트되거나 값을 리턴
Placeholder
그래프를 미리 만들어 놓고 실행시키는 단계에서 값을 넘겨주고 싶을 때 placeholder()를 사용한다.
1
2
3
4
5
6
|
a = tf.placeholder(tf.float32)
b = tf.placeholder(tf.float32)
adder_node = a+b
|
constant 대신 placeholder를 사용하여 a와 b 노드를 만든다. 또한 adder_node는 a노드와 b노드를 더하는 연산 노드가 된다. sess.run(op)를 통해 그래프를 실행시키는데 feed_dict를 통해 값을 넘겨주면서 그래프를 실행시킬 수 있다. 이때 넘겨주는 값은 숫자뿐 아니라 배열을 통해 여러 개도 가능하다.
실행결과
Everything is Tensor!
텐서는 기본적으로 array(배열)을 의미한다.
1
2
3
4
5
|
3 #a rank 0 tehnsor;
[1. ,2., 3.] # a rank 1 tensor;
[[1. ,2., 3.], [4. ,5., 6.]] #a rank 2 tensor
[[[1. ,2., 3.]], [[7. ,8., 9.]]] #a rank 2 tensor
|
Tensor Ranks, Shapes, and Types
텐서를 얘기할 때는 ranks, shapes, types 등으로 말한다.
예)
Rank | Math entity | Python example |
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 =[[[1], [4], [6]], [[8], [10], [12]], [[14, [16], [18]]] |
n | n-Tensor | ..... |
위의 예를 shape로 나타내면 아래와 같다.
Rank | Shape | Dimension number | example |
0 | [] | 0-D | A 0-D tensor. A scalar |
1 | [D0] | 1-D | A 1-D tensor with shape [5] |
2 | [D0, D1] | 2-D | A 2-D tensor with shape [3, 4] |
3 | [D0, D1, D2] | 3-D | A 3-D tensor with shape [1, 4, 3] |
n | [D0, D1, .... Dn-1] | n-D | A tensor with shape [D0, D1, ..... Dn-1] |
대표적인 텐서의 타입은 아래와 같다.
Data type | Python type | Description |
DF_FLOAT | tf.float32 | 32 bits floating point |
DF_DOUBLE | tf.float64 | 64 bits floating point |
DF_INT | tf.int8 | 8 bits signed integer |
DF_INT16 | tf.int16 | 16 bits signed integer |
DF_INT32 | tf.int32 | 32 bits signed integer |
DF_INT64 | tf.int64 | 64 bits signed integer |
오류 또는 이상한 점 있다면 댓글로 남겨주시기 바랍니다.
감사합니다.
'머신러닝(machine learning)' 카테고리의 다른 글
[머신러닝][딥러닝] TensorFlow로 간단한 linear regression 구현 2.1 (0) | 2020.04.08 |
---|---|
[머신러닝][딥러닝] Linear Regression(선형 회귀)의 Hypothesis 와 cost 2.0 (0) | 2020.04.08 |
[머신러닝][딥러닝] 에이다부스트(Adaboost) 개념 정리 (0) | 2020.04.08 |
[머신러닝][딥러닝] 기본 머신러닝 개념 및 용어 1.0 (0) | 2020.04.07 |
머신러닝(Machine Learning)과 딥러닝(Deep Learning)의 차이. [딥러닝][머신러닝][기계학습][심층학습][인공지능] (1) | 2020.04.06 |