TensorFlow의 기본적인 사용법

imssonice·2023년 1월 16일
0

2022 동계 모각소

목록 보기
3/11
  • TensorFlow는 어떻게 동작하는가?
    연산은 graph를 이용. 노드와 엣지로 이루어짐!
    그래프는 session내에서 실행됨
    데이터는 tensor로 표현
    변수는 그 상태를 유지함(여러 그래프가 작동할 때도)
    데이터 입출력할 때 feed와 fetch를 사용
    그래프로 연산을 나타내는 프로그래밍 시스템!

그래프에 있는 노드는 op(operation)라고 부름. op는 0개 혹은 그 이상의 tensor를 가질 수 있고 연산을 수행하며 0개 혹은 그 이상의 tensor를 만들어 내기도 함.
여기서 tensor란 정형화된 다타원 배열을 말한다. ex) 이미지: 부동소수점 수를 이용한 4차원 배열로 나타냄.

연산을 하려면 그래프가 세션 상에서 실행되어야 함. session은 그래프의 작업을 CPU나 GPU같은 디바이스에 배정하고 실행하기 위한 메서드를 제공함.

TensorFlow는 C, C++, 파이썬을 이용해 쓸 수 있는데, 파이썬을 이용하는 것이 훨씬 쉬움. C/C+++에서 제공하지 않ㄴ는 헬퍼 함수들을 쓸 수 있기 때문!

  • Graph 만들기
    아무 입력값이 필요없는 op를 정의하는 것에서부터 시작함. 파이썬 라이브러리의 작업 생성 함수는 만들어진 작업들의 결과값을 반환하는데, 이 반환값은 다른 작업을 생성할 때 함수 입력값으로 사용될 수 있다.
#1x2행렬 만들기
matrix1 = tf.constant([[3.,3.]])
#2x1행렬 만들기
matrix2 = tf.constant([[2.], [2.]])
#'matrix1'과 'matrix2를 입력값으로 하는 행렬곱
product = tf.matmul(matrix1, matrix2)

default graph에 3개 노드가 있음. 여기서 2개는 상수 작업, 다른 하나는 행렬곱 작업이다. 결과값을 얻으려면 session에다 graph를 실행해야 함.

  • session에서 graph 실행
# default graph를 실행
sess = tf.Session()
#행렬곱 실행
result = sess.run(product)
print(result)
#실행 마치면 Session 닫기
sess.close()

여기서 결과는 [[12.]]가 나온다.

  • Fetches
    작업의 결과를 가져오기 위해 Session 오브젝트에서 run()을 호출해서 graph를 실행하고 tensor로 결과값을 끌어냄. 여러개 tensor를 받아올 수도 있음.
input1 = tf.constant([3.0])
input2 = tf.constant([2.0])
input3 = tf.constant([5.0])
intermed = tf.add(input2, input3)
mul = tf.multiply(input1, intermed)

with tf.Session() as sess:
  result = sess.run([mul, intermed])
  print(result)

여기서 결과는 [array([ 21.], dtype=float32), array([ 7.], dtype=float32)]이다.

  • Feeds
    graph의 연산에게 직접 tensor 값을 줄 수 있음. feed 값은 일시적으로 연산의 출력값을 입력한 tensor 값으로 대체함. run()으로 전달 돼서 run()의 변수로만 사용가능.
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = input1 * input2

with tf.Session() as sess:
  print(sess.run([output], feed_dict={input1:[7.], input2:[2.]}))

결과는 [array([ 14.], dtype=float32)]

  • Tensor Ranks, Shapes, and Types


참고
https://inf.run/Ndkd
https://tensorflowkorea.gitbooks.io/tensorflow-kr/content/g3doc/get_started/basic_usage.html

profile
공부한 거 정리하는 용도로 씁니다.

0개의 댓글