[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/Data & AI

TensorFlow 텐서 초기화

inu 2020. 7. 31. 12:44
반응형

  • 텐서 : 딥러닝에서는 그냥 '다차원 배열'의 의미로 받아들여도 된다. numpy 배열과 비슷하다. GPU와 같은 가속기 메모리에 상주할 수 있다.
  • 이러한 텐서 데이터들이 서로 연산을 주고 받으며 흘러가면서 계산된다.

  • 일반적으로 텐서는 불변성(immutable)이다. 생성 이후 변경할 수 없다.

상수 텐서 초기화

import tensorflow as tf

# 값이 일정한 텐서 선언
tensor_a = tf.constant(value, dtype=None, shape=None, name=None) # 모든 값이 value
tensor_a = tf.zeros(shape=None, name=None) # 모든 값이 0
tensor_a = tf.ones(shape=None, name=None) # 모든 값이 1
  • 모든 요소의 값이 동일한 상수 텐서 생성
  • dtype : tensor 타입
  • shape : tensor 차원
  • name : 이름, 이를 활용해 참조가능

시퀀스 텐서 초기화

import tensorflow as tf

# start에서 stop까지 증가하는 num 개의 데이터 텐서
tensor_d = tf.linspace(start, stop, num, name=None)
# start에서 stop까지 delta씩 증가하는 데이터 텐서
tensor_e = tf.range(start, limit=None, delta=None, name=None)
  • 특정 규칙으로 이어지는 값들을 가지는 텐서 생성

난수 텐서 초기화

import tensorflow as tf

# 정규분포 난수를 가지는 텐서
tensor_f = tf.random.normal(shape, mean=0.0, stddev=1.0, seed=None, name=None)
# 균등분포 난수를 가지는 텐서
tensor_g = tf.random.uniform(shape=(10,10), minval=0.0, maxval=10, seed=None, name=None)
  • 특정 분포를 따르는 난수들을 가지는 텐서 생성
  • 정규분포는 '확률값'을 분포하는 것이라면 균등분포는 minval~maxval을 동일한 확률로 분포한다.

변수 텐서 초기화

import tensorflow as tf

tensor = tf.Variable(value)
  • value에 상수 텐서를 넣어 생성한다.
  • 해당 변수 텐서가 아닌 일반 텐서는 텐서 값은 변경할 수 없다. 텐서는 한번 실행시킨 경우엔 오직 하나의 값만을 가진다. (하지만 동일 텐서를 재실행하면 다른 값을 가질 수 있다.)
  • 퍼셉트론의 weight나 bias 값을 조절하는데 활용된다.

텐서 연산자

# 더하기
print(tf.add(1, 2))
print(tf.add([1, 2], [5, 6]))

# 제곱
print(tf.square(3))

# 총합
print(tf.reduce_sum([1, 2, 3]))

# 연산자 오버로딩
print(tf.square(3) + tf.square(3))

# 행렬곱
tf.matmul([[1]], [[2, 3]])
==출력==
tf.Tensor(3, shape=(), dtype=int32)
tf.Tensor([6 8], shape=(2,), dtype=int32)
tf.Tensor(9, shape=(), dtype=int32)
tf.Tensor(6, shape=(), dtype=int32)
tf.Tensor(18, shape=(), dtype=int32)
tf.Tensor([[2 3]], shape=(1, 2), dtype=int32)
  • 텐서를 이용해 각종 수학적 연산을 진행할 수 있다.
  • 연산 내부에 numpy 배열이 있어도 호환된다. (이는 numpy에서도 마찬가지이다.)
반응형