Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

코딩세상

[딥러닝 기초] 2장 텐서플로우와 딥러닝 학습 방법 - 텐서플로우 기초 사용법 본문

인공지능

[딥러닝 기초] 2장 텐서플로우와 딥러닝 학습 방법 - 텐서플로우 기초 사용법

필륭 2023. 9. 3. 19:21

- 텐서 다뤄보기

 

텐서의 종류

텐서 플로우에서는 텐서(Tensor)형으로 생성되는 연산을 제공합니다.

이러한 텐서는 다양한 타입을 가지고 있습니다.

  • 상수 텐서
  • 시퀀스 텐서
  • 변수 텐서

가 있으며, 각각의 텐서들은 우리가 프로그램을 작성할 때 사용하는 역할과 동일한 역할을 합니다.

 

 

 

- 상수 텐서(Constant Tensro)

 

import tensorflow as tf

# 상수형 텐서 생성

tensor_a = tf.constant(value, dtype=None, shape=None, name=None)

 

상수 텐서는 그 의미대로 변하지 않는 값을 가지는 텐서를 의미합니다. 

 

각각의 값이 의미하는 바는 아래의 표와 같습니다.

 

value : 반환되는 상수값 shape : Tensor 차원
dtype : 반환되는 Tensor 타입 name : 텐서 이름

 

 

 

 

- 다양한 상수 텐서 생성하기

 

특히 인공지능을 다루다보면 모든 원소의 값이 0인 텐서이거나 모든 원소의 값이 1인 텐서를 생성하여 해당 텐서를 연산과정에 넣는 것을 많이 확인할 수 있습니다.

그렇다면 이러한 텐서들은 어떻게 생성할 수 있을까요?

 

import tensorflow as tf

# 모든 원소의 값이 0인 텐서 생성
tensor_b = tf.zeros(shape, dtype=tf.float32, name=None)

# 모든 원소의 값이 1인 텐서 생성
tensor_c = tf.ones(shape, dtype=tf.float32, name=None)

 

위의 코드처럼 tf.zeros(), tf.ones()를 사용하면 손 쉽게 원하는 shape를 가진 모든 원소의 값이 0인 텐서와 모든 원소의 값이 1인 텐서를 만들 수 있습니다.

 

 

 

- 시퀀스 텐서(Sequence Tensor)

 

시퀀스 텐서(Sequence Tensro)에서 시퀀스(Sequence)란 ‘일련의 연속적인 사건들’ 또는 ‘사건이나 행동 등의 순서’라는 사전적 의미를 가지고 있으며, 영어 단어 뜻과 마찬가지로 코딩에서는 알고리즘 내에서 공간적·시간적으로 정해져 있는 순서를 의미합니다. 

 

의미가 너무 어렵게 다가올 수도 있다고 생각하지만 간단하게 설명하면 라면을 끓일 때 "냄비를 꺼낸다 -> 물을 넣는다. -> 물이 끓으면 스프와 면을 넣는다" 처럼 순서에 따라 일련의 과정이 진행되는 것을 말합니다.

 

그럼 텐서플로우에서는 어떻게 코드를 작성해서 나타내는지 아래의 코드를 통해 알아보겠습니다.

 

import tensorflow as tf

# start에서 stop까지 증가하는 num 개수 데이터를 가진 텐서 생성
tensor_d = tf.linspace(start, stop, num, name=None)

 

각각의 값이 나타내는 의미는 아래의 표를 통해 확인할 수 있습니다.

 

start : 시작 값 stop: 끝 값
num : 생성할 데이터 개수 name : 텐서의 이름

 

위 코드는 tf.linspace()를 사용하여, 지정된 축을 따라 일정한 간격으로 균일한 간격의 값을 생성하는 코드 입니다.

 

import tensorflow as tf

# start에서 stop까지 증가하는 num 개수 데이터를 가진 텐서 생성
tensor_d = tf.linspace(10.0, 12.0, 3, name="linspace")
# tensor_d => [ 10.0  11.0  12.0]

위와 같이 코드를 작성하게 되면 10과 12 사이의 3개의 데이터를 생성한다는 의미로 tensor_d의 변수에 텐서의 형태로 저장되게 됩니다.

 

 

import tensorflow as tf

# start에서 limit까지 delta씩 증가하는 데이터를 가진 텐서 생성
tensor_e = tf. range(start, limit, delta, name=None)

각각의 값이 나타내는 의미는 아래의 표를 통해 확인할 수 있습니다.

 

start : 시작값 limit : 끝 값
delta : 증가량 name : 텐서의 이름

 

 

tf.range의 경우 python에서 for문을 사용하여 일정한 간격을 가진 변수의 값을 증가시키는 방법과 똑같은 방법으로

 

start = 3
limit = 18
delta = 3
tf.range(start, limit, delta)

<tf.Tensor : shape(5,), dtype=int32, numpy=array([3, 6, 9, 12, 15], dtype=int32)>

위의 예제처럼 3부터 18미만의 수가 3의 간격을 가지고 증가하여 tensor의 형태로 저장되는 것을 확인할 수 있습니다.

 

 

 

- 변수 텐서(Variable Tensor)

 

변수 텐서(Variable Tensor)는 말 그대로 변경될 수 있는 값을 가지는 텐서를 말합니다.

 

import tensorflow as tf

# 변수형 텐서 생성
tensor_f = tf.Variable(initial_value=None, dtype=None, name=None)

변수 텐서는 위와 같이 tf.Variable()를 사용하여 선언할 수 있으며,

각각의 값이 나타내는 의미는 아래의 표를 통해 확인할 수 있습니다.

 

initial_value : 초기 값 dtype : 반환되는 Tensor 타입
name : 텐서의 이름  

 

 

 

상수 텐서, 시퀀스 텐서, 변수 텐서는 위에서 설명한 것 이외에도 많은 텐서가 있고 해당 텐서들에 대한 내용은 텐서플로우 공식 홈페이지에서 확인하실 수 있습니다.

https://www.tensorflow.org/?hl=ko 

 

TensorFlow

모두를 위한 엔드 투 엔드 오픈소스 머신러닝 플랫폼입니다. 도구, 라이브러리, 커뮤니티 리소스로 구성된 TensorFlow의 유연한 생태계를 만나 보세요.

www.tensorflow.org

 

 

 

 

 

 

# 출처

 

엘리스 AI 트랙 7기 - [강의자료] 텐서플로우와 딥러닝 학습 방법

 

 

Comments