1. Tensorflow에서 Tensor를 생성하는 방법

텐서플로에서 사용하는 주 자료구조가 텐서(Tensor)입니다. 텐서는 변수로 선언할 수도 있고, 데이터 투입 대상인 Placeholder로 선언할 수도 있습니다. 텐서를 생성하는 방법은 여러가지가 있습니다. 텐서를 생성하기 위한 여러가지 내장 함수를 살펴보도록 하겠습니다.


1. 고정 텐서

텐서플로에서 고정된 값으로 텐서를 생성하기 위한 방법은 아래와 같습니다.

tf.zeros()

0 값으로 채워진 텐서를 생성하기 위한 함수입니다.

1zeros_tensor = tf.zeros([row_dim, col_dim])

tf.ones()

1값으로 채워진 텐서를 생성하기 위한 함수입니다.

1ones_tensor = tf.ones([row_dim, col_dim])

tf.fill()

동일한 상수 값으로 채워진 텐서를 생성하기 위한 함수입니다.

1filled_tensor = tf.fill([row_dim, col_dim])

tf.constant()

기존 상수를 이용해 텐서를 생성하기 위한 함수입니다.

1constant_tensor = tf.constant([1, 2, 3])

2. 비슷한 값을 가지는 텐서

기존 텐서의 형태를 바탕으로 텐서 변수를 초기화하는 것도 가능합니다.

tf.zeros_like / tf.ones_like

1zeros_similar = tf.zeros_like(constant_tensor)
2ones_similar = tf.ones_like(constant_tensor)

3. 시퀀스 텐서

구간을 지정하는 방식으로 텐선을 선언할 수 있습니다.

tf.range()

정수 시퀀스 텐서를 생성합니다.

1# range(start, limit=None, delta=1, name='range')
2integer_sequence_tensor = tf.range(start=6, limit=15, delta=3)
  • start : 시퀀스의 시작값이며, 기본값은 0
  • limit : 시퀀스의 상한값이며, 시퀀스에 포함되지 않음
  • delta : start를 증가시키는 수
  • name : 연산의 명칭(선택)

tf.linspace()

일정 구간 사이의 값을 생성합니다.

1# linspace(start, stop, num, name=None)
2linear_tensor = tf.linspace(start=0, stop=1, num=3)
  • start : 시퀀스의 시작값
  • stop : 시퀀스의 상한값
  • num : 생성할 값들의 개수

4. 랜덤 텐서

난수 기반의 텐서를 생성하는 방법은 아래와 같습니다.

tf.random_uniform()

균등 분포를 따르는 난수를 생성합니다.

1# random_uniform(shape, minval=0, maxval=None, dtype=tf.float32, seed=None, name=None)
2randunif_tensor = tf.random_uniform([row_dim, col_dim], minval=0, maxval=1)
  • shape : 정수값의 D-1 텐서 또는 파이썬 배열 입력
  • minval : 난수값 생성 구간의 하한
  • maxval : 난수값 생성 구간의 상한
  • dtype : 반환값의 타입 설정 (float32, float64, int32, int64)
  • seed : 난수 시드값 설정에 사용
  • name : 연산의 명칭(선택)

tf.random_normal()

정규 분포를 따르는 난수를 생성합니다.

1# random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
2randnorm_tensor = tf.random_normal([row_dim, col_dim], mean=0.0, stddev=1.0)
  • shape : 정수값의 D-1 텐서 또는 파이썬 배열 입력
  • mean : 정규분포의 평균값
  • stddev : 정규분포의 표준 편차
  • dtype : 반환값의 타입 설정 (float32, float64, int32, int64)
  • seed : 난수 시드값 설정에 사용
  • name : 연산의 명칭(선택)

tf.truncated_normal()

지정한 평균에서 표준편차 2배 이내의 값을 생성합니다. 특정 범위에 속하는 정규 분포 임의의 값을 생성하고 싶은 경우 사용합니다.

1# truncated_normal(shape, mean, stddev=1.0, dtype=tf.float32, seed=None, name=None)
2runcnorm_tensor = tf.truncated_normal([row_dim, col_dim], mean=0.0, stddev=1.0])
  • shape : 정수값의 D-1 텐서 또는 파이썬 배열 입력
  • mean : 정규분포의 평균값
  • stddev : 정규분포의 표준 편차
  • dtype : 반환값의 타입 설정 (float32, float64, int32, int64)
  • seed : 난수 시드값 설정에 사용
  • name : 연산의 명칭(선택)

tf.random_shuffle()

배열 항목을 뒤섞을 때 사용합니다. random_shuffle() 함수는 값의 첫번째 차원을 기준으로 랜덤하게 섞어줍니다.

1# random_shuffle(value, seed=None, name=None)
2shuffled_output = tf.random_shuffle(input_tensor)
  • value : 입력 텐서

tf.random_crop(value, size, seed=None, name=None)

텐서를 주어진 사이즈만큼 랜덤하게 잘라내고 싶을 때 사용합니다.

1# random_crop(value, size, seed=None, name=None)
2cropped_output = tf.random_crop(input_tensor, crop_size)
  • value : 입력 텐서
  • size : 잘라내고 싶은 텐서의 사이즈


+ Recent posts