딥러닝 프레임워크 : 텐서플로우

2023. 11. 28. 19:20인공지능

728x90

텐서플로우

  • 구글에서 2015년 공개한 오픈소스라이브러리
  • 데이터 플로우 그래프를 이용하여 계산과정과 모델을 표현
  • 기계학습 알고리즘을 구현하고 실행하기 위한 프로그래밍 인터페이스
  • 신경망과 딥러닝 관련 라이브러리 제공

 

데이터 플로우 그래프

: 텐서플로우 프로그램을 통하여 수행되는 일련의 계산을 정의

 

 

Variable

  • 모델의 학습 가능한 변수를 정의할 때 사용
  • 가중치, 편향 등의 파라미터를 저장하는 데 사용
  • 정의할 때 반드시 초기화되어야 함

Placeholder

  • 데이터플로우 그래프 실행 시 데이터(Tensor)를 전달하기 위해 사용
  • 그래프 실행 시 값이 제공되어야 함

Tensorboard

  • 텐서플로우에서 제공하는 시각화 도구
  • 데이터플로우 그래프, 학습과정의 성능 변화등을 보여줄 수 있음

Tensor

  • 텐서플로우에서 사용하는 기본 자료형인 다차원 배열
  • rank, shape, type의 세 가지 속성을 가짐
  • rank: 텐서의 차원 수

  • shape: 텐서의 구조

    예) b=[6,3,5,2,7] -> b의 shape: [5] 
    -> rank 1인 텐서로 원소를 5개 가지고 있음
    c=[ [1,2,3], [3,6,1] ] -> c의 shape: [2,3]
    -> 2*3의 2차원 
    d=[ [ [1,2], [3,4], [2,8] ], [ [3,2], [5,7], [4,3] ] ] -> d의 shape: [2,3,2]
    -> 2*3*2의 3차원
  • type: 텐서 구성원소의 자료형

 

 

 

텐서 변환 연산

1. reshape(텐서, shape): 텐서의 기존의 원소를 새로운 shape에 따라 원소 배치

예) a=[1,2,3,4,5,6] 일 때

tf.reshape(a, [2,3]) 

-> [ [1,2,3], [4,5,6] ]로 바뀜

 

 

2. squeeze(텐서): 텐서에서 크기가 1인 축을 제거

예) tf.squeeze( [0], [1], [2] )

-> 텐서가 [0,1,2] 로 바뀜

 

 

3. expand_dims(텐서, 확장축): 텐서의 지정한 축의 위치에 차원 추가

- 축의 인자는 0부터 시작 (shape의 앞에서부터 축 0, 축 1, 축 2...)

예) tf.expand_dims([ [1,2,3], [4,5,6] ], 0) -> [ [ [1,2,3], [4,5,6] ] ]로 바뀜

-> shape가 [2,3]에서 [1,2,3]으로 바뀐 것

tf.expand_dims([ [1,2,3], [4,5,6] ], 1) -> [ [ [1,2,3] ], [ [4,5,6] ] ]로 바뀜

-> shape가 [2,3]에서 [2,1,3]으로 바뀐 것

 

 

4. slice(텐서, [축 0의 추출시작위치, 축 1의 추출시작위치, ... , 축 d-1의 추출 시작위치], 

[축 0의 추출길이, 축1의 추출길이,... , 축 d-1의 추출길이])

: 텐서에서 일부분 선택(추출)

 

 

5. split(텐서, 텐서분할개수, 축) : 지정된 축을 따라 하나의 텐서를 주어진 개수의 텐서들로 분리

축 1로 분리하면 수직으로 분리되고,

축 0으로 분리하면 수평으로 분리된다.

 

 

6. concat( [텐서 1, 텐서 2], 차원): 한 축을 기준으로 두 텐서를 이어 붙임(시작위치는 0부터 시작)

만약 맞는 축이 없다면 붙일 수 없다. 

 

 

7. split(텐서, 텐서분할개수, 축)

: 지정된 축을 따라 하나의 텐서를 주어진 개수의 부분 텐서로 분리

축1로 분리하면 수직으로, 축0으로 분리하면 수평으로 분리

 

 

8. concat( [텐서 1, 텐서 2], 차원) : 한 축을 기준으로 두 텐서를 이어 붙임

예) 

t1, t2가 1차원일 때

에러발생

 

t1,t2가 2차원일 때

 

 

9. reverse(텐서, [축]) : 텐서의 축을 기준으로 원소를 역순으로 배열

0축을 기준: 바깥쪽, 1축을 기준: 안쪽

 

 

10. transpose(텐서, perm=[축의 순열]): 텐서의 지정된 축을 지정된 순서로 바꿈

이때, 축의 순열을 지정 안 하면

2차원일 경우 [1,0] 기본값으로 적용

3차원일 경우 [0,2,1] 기본값으로 적용

 

 

11. gatehr(텐서, [첨자들]) : 지정된 첨자(index)의 원소들로 이루어진 텐서를 생성

1차원인 경우 인덱스
2차원인 경우 행
[0행,0행] ,[1행,1행]

 

 

12. one_hot(텐서, depth=전체 원소의 가짓수)

: 정수값을 one-hot 벡터로 변환

* one-hot 벡터: 데이터를 중복 없이 표현할 때 사용하는 형식

0이라면 0번째 자리에 1을, 1이라면 1번째 자리에 1을 ...

 

 

텐서 산술 연산 함수

: 기본적인 산술 연산은 동일 shape의 텐서에서 동일 위치 별로 수행한다.

 

텐서 축약 연산 함수

: 텐서의 크기를 줄이는 함수

지정된 축에서 이런 값들만 남기고 나머진 없앤다.
reduce_logsumexp함수는 축 방향을 지정하지 않으면 모든 값에 대하여 계산한다.

 

 

텐서 행렬 연산 함수

:행렬 연산 함수들

 

 

기타 함수들

728x90

'인공지능' 카테고리의 다른 글

자연어 처리  (0) 2023.12.05
5. 딥러닝 - convolution 신경망  (1) 2023.11.16
5. 딥 러닝- 개요  (0) 2023.11.10
4. 기계 학습 - 신경망  (0) 2023.11.10
4. 기계학습 - 학습 알고리즘  (0) 2023.11.07