본문 바로가기
Data Science/ML

[ML] - Tensorflow의 기본 Operations

by 호찌민 2021. 4. 26.

 취준하면서 머신러닝, 딥러닝을 많이 안하다(?) 보니 개념이 가물가물해서 유튜브에 있는 김성훈 교수님의 강의를 듣게 되었다. 😏

 

 사실 전부터 Tensorflow에 대해서 좀 배워보고 싶기도 했고 머신러닝의 개념에 대해 다시 한번 알아가면서 공모전 등에 Tensorflow를 적용해보고 싶어서 공부를 시작했다. 취준하면서 서류, 인적성, 면접 등을 주로 하고 있고 데이터 분석에 대한 공부로 SQL, Kaggle 등 은혁이랑 함께 하고 있지만, 시간을 내서라도 하루에 2강 이상씩 보며 Tensorflow를 공부해보려 한다. Keep Going ! 🙋‍♂️


  • Tensorflow는 dataflow graph를 사용해서 numerical을 계산할 수 있는 라이브러리이다.
  • graph는 node와 node를 연결하는 edge로 이루어져있다.
  • Graph는 node들이 하나의 Operator이다. Edge는 Data(Tensor)이다.
  • 연산을 통해 원하는 결과물을 얻거나, 작업을 할 수 있는 것이 Data Flow Graph이다.
hello = tf.constant('Hello, Tensorflow') # 하나의 노드가 생성이 된 것.
print(hello) # ver 2.0 에서는 Session 실행 안해도 자체적으로 값이 출력된다.

>> tf.Tensor(b'Hello, Tensorflow', shape=(), dtype=string)

Tensorflow의 실행 순서는 아래와 같다.

  1. graph를 빌드
  2. graph를 실행
  3. 실행 결과로 값을 업데이트하거나 출력함
node1 = tf.constant(3.0, tf.float32)
node2 = tf.constant(4.0)

@tf.function # tensorflow version2 에서 함수를 만드는 Decorator
def forward():
    return node1 + node2

out_a = forward()
print(out_a)

>> tf.Tensor(7.0, shape=(), dtype=float32)
W = tf.Variable(tf.ones(shape=(2,2)), name = "W") # W라는 변수 지정
b = tf.Variable(tf.zeros(shape=(2)), name = "b") # b라는 변수 지정

@tf.function # 함수 생성 Decorator
def forward(x):
    return W * x + b

out_a = forward([1,0])
print(out_a)

>> tf.Tensor(
[[1. 0.]
 [1. 0.]], shape=(2, 2), dtype=float32)

constant : 상수/ Variable : 변수이다.

 

Ranks, Shape, Type

- Ranks : 몇 차원의 Array 인지?
    - Ranks : 0 -> Scalar ex) s = 483
    - Ranks : 1 -> Vector ex) v = [1, 2, 3]
    - Ranks : 2 -> Vector ex) v = [[1, 2, 3], [4,5,6]]
   
- Shape : 차원의 형태는 무엇인지?
    - ex) t = [[1,2,3], [4,5,6], [7,8,9]] <- [3,3] 또는 [3 3) 의 shape 이다.

- Type : 어떤 타입인지?
    - ex) tf.int32, tf.float32 등