데이터 취업 스쿨 스터디 노트 -(78) Tensor 다루기

테리·2024년 9월 24일
0

1. 상수

Shape과 데이터 타입이 맞지 않으면 연산되지 않는다.

  • 차원이 맞지 않는경우
  • 하나는 int인데 다른 하나는 float인 경우

데이터 타입 컨트롤

  • tensor 생성시 dtype 지정
  • tf.cast

특정값의 텐서 생성

난수

random seed 관리 중요!

tf.random.set_seed()
random seed를 관리하지 않으면 운좋을때는 좋게 나오고 운 나쁠때는 안좋게 나옴. 그래서 내가 어떤것으로 진행했는지 seed 관리가 중요함.

2. 변수

  • 미지수, 가중치를 정의할 때 사용(값이 변화될 수 있는 값)
  • 직접 사용할 일이 많지는 않음
  • 변수 정의는 변수 생성 + 초기화
tensor = tf.constant([[1.0, 2.0], [3.0, 4.0]])
arr = np.array([[1, 2], [3, 4]])
li = [[1, 2], [3, 4]]

te_var = tf.Variable(tensor)
arr_var = tf.Variable(arr)
li_var = tf.Variable(li)

print(te_var)
print(arr_var)
print(li_var)

변수는 기존 텐서의 메모리를 재사용하여 텐서를 재할당 할 수 있다

  • 메모리 재사용은 GPU와 같은 하드웨어에서 더 빠르게 계산할 수 있도록 도와줌.
a = tf.Variable([2.0, 3.0])
print("First : ", a, "\n")
#
a.assign([1, 2]) 
print("Second : ", a, "\n")
  • 처음 변수를 만들 때 float였으므로 재 할당을 int로 해도 float이다.
  • a.assign([1.0, 2.0, 3.0])과 같이 기존 메모리의 크기와 다르면 할당할 수 없다.

tensor 연산

tf.add(a, b)를 그냥 a+b로 해도 된다.

tf.add: 덧셈
tf.subtract: 뺄셈
tf.multiply: 곱셈
tf.divide: 나눗셈
tf.pow: n-제곱
tf.negative: 음수 부호
tf.abs: 절대값
tf.sign: 부호
tf.round: 반올림
tf.ceil: 올림
tf.floor: 내림
tf.square: 제곱
tf.sqrt: 제곱근
tf.maximum: 두 텐서의 각 원소에서 최댓값만 반환.
tf.minimum: 두 텐서의 각 원소에서 최솟값만 반환.
tf.cumsum: 누적합
tf.cumprod: 누적곱

Axis

rank_4[1, 2, 1, 2]

차원 축소 연산

tf.reduce_mean: 설정한 축의 평균을 구한다.
tf.reduce_max: 설정한 축의 최댓값을 구한다.
tf.reduce_min: 설정한 축의 최솟값을 구한다.
tf.reduce_prod: 설정한 축의 요소를 모두 곱한 값을 구한다.
tf.reduce_sum: 설정한 축의 요소를 모두 더한 값을 구한다.

행렬과 관련된 연산

tf.matmul: 내적
tf.linalg.inv: 역행렬

크기 및 차원을 바꾸는 명령 (잘 사용됩니다!!)

이를 사용 할 때는 축을 잘 이해하고 사용하시면 좋습니다.

tf.reshape: 벡터 행렬의 크기 변환
tf.transpose: 전치 연산
tf.expand_dims: 지정한 축으로 차원을 추가
tf.squeeze: 벡터로 차원을 축소

텐서를 나누거나 두 개 이상의 텐서를 합치는 명령

tf.slice: 특정 부분을 추출
tf.split: 분할
tf.concat: 합치기
tf.tile: 복제-붙이기
tf.stack: 합성
tf.unstack: 분리

0개의 댓글