Machine learning/Deep Learning

[Deep Learning] Tensorflow 자주 사용하는 Tensor 함수 정리

Acdong 2021. 8. 21. 16:58
728x90

Tensorflow 프레임 워크를 사용하다 보면 자주사용하는 코드를 발견하곤 하는데.

정확히 어떤 기능을 하는 지 알지못하고 함수이름으로 대충 짐작하고 넘어가는 경우가 많았다.

 

이번엔 이런 것들을 코딩하는 동안에 발견할때마다 정확한 기능을 정리해보고자 한다.

중요도 상관없이 계속해서 나열

*Dense , Embedding 같은 Layer 들은 제외하고 Tensor들을 다루는 함수들


expand_dims
 - tf.expand_dims(input, axis)
용어 설명 : 
 (1) Expand : 확장하다, 넓히다
 (2) dimension(dims) : 차원

 

해석 : 차원을 확장해주는 함수이다.

image = tf.zeros([10,10,3]) # TensorShape([10, 10, 3])

"0"으로 채워진 10행 3열 짜리가 10개 존재

이미지로 치면 : [height, width, channels]

tf.expand_dims(image, axis=0).shape.as_list()

결과 : [1, 10, 10, 3]

tf.expand_dims(image, axis=1).shape.as_list()

결과 : [10, 1, 10, 3]

 

정리 :

expand_dims 은 Tensor의 어떤 요소를 추가하는 것이 아니라 차원(dims)을 추가해주는 함수이다.

여기서 axis는 차원의 어떤 부분(position)에 추가해줄 것인지를 결정하는 매개변수라고 볼 수 있다.

 

expand_dims 는 인풋데이터의 차원과 아웃풋데이터의 차원이 다를 경우 차원을 서로 맞춰주기위해서 자주 사용된다.


squeeze

 -tf.squeeze(input, axis=None)

용어설명 :
 (1) squeeze : 짜내다 , 압착

 

해석 : 
 차원을 압축하는 함수이다. ( expand의 반대 )

example = tf.zeros([1,2,1,3,1,1])

axis 를 지정하지 않을 경우 ( default )

tf.shape(tf.squeeze(example))

결과: array([2, 3]


axis 를 지정할 경우 ( [2,4] )

tf.shape(tf.squeeze(example , [2,4]))

결과 : array([1, 2, 3, 1]

 

정리 : squeeze 함수는 차원을 줄여주는 함수이지만 크기가 1인 차원만 제거하는 함수이다.

          axis 를 통해서 특정 위치에 있는 크기가 1인 차원만 제거할 수도있다.


reduce_sum

 - tf.reduce_sum(x,axis)

용어 설명: 
 (1) Reduce : 줄이다 
 (2) Sum : 더하다

 

해석 : 
 특정 차원을 제거하고 합계를 구한다.

x = np.array([[1,1,1],[1,1,1]])

[[1, 1, 1],

[1, 1, 1]]

 

axis 값을 주지 않았을 경우 ( default ) 모든 값을 더함.

tf.reduce_sum(x).numpy()

[[1, 1, 1],

[1, 1, 1]]

결과 : 6

 

 axis = 0 일경우 가로에 있는 값을 더함

tf.reduce_sum(x, 0).numpy()

[[1, 1, 1],

[1, 1, 1]]

결과 :  [ 2 , 2 , 2 ]

 

 axis = 1 일 경우 세로에 있는 값을 더함

tf.reduce_sum(x, 1).numpy()

[[1, 1, 1],

[1, 1, 1]]

결과 : [ 3 , 3 ]

 

정리 : reduce_sum 은 행렬들의 값을 합침으로써 차원을 줄이는 함수입니다.
 axis는 줄일 치수입니다. None(기본값)인 경우 모든 치수를 줄입니다.


reduce_mean

 - tf.reduce_mean(x)

용어 설명:

해석 : 

결과 :

정리 :

 

stack

 -tf.stack(x,axis)

용어 설명:

해석 : 

결과 :

정리 :

 

argmax

 -tf.argmax(x)

용어 설명:

해석 : 

결과 :

정리 :

 

concat

 - tf.concat(x,y,axis)

용어 설명:

해석 : 

결과 :

정리 :

 

reshape

 -tf.reshape(x,y)

용어 설명:

해석 : 

결과 :

정리 :

 

cast

tf.cast(x, dtype)

용어 설명:

해석 : 

결과 :

정리 :

 

logical_not

tf.math.logical_not(x)

용어 설명:

해석 : 

결과 :

정리 :

 

equal

tf.math.equal(x,y)

용어 설명:

해석 : 

결과 :

정리 :

 

반응형