텐서플로 함수들 정리

0

tf.reshape(원본 텐서, 변환 텐서 차원)

원본 텐서가 (6,)의 차원을 가지는 [0, 1, 2, 3, 4, 5]라고 했을 때, 변환 텐서 차원이 [2, 3]이라고 하면

[ [0,1,2]

[3,4,5] ]

의 형태로 변환해준다. 행렬과 마찬가지로 앞쪽이 행,
뒤쪽이 열임에 유의

numpy의 경우 np.arrange(원본 텐서).reshape(변환 텐서 차원)으로 사용

###tf.cast(텐서, 텐서의 dtype)

텐서의 각 요소들의 dtype을 변경해준다. dtype=tf.int32 와 같이 비트수를 뒤에 붙여 표시해주어야함

tf.concat([텐서1, 텐서2,....], axis=)

같은 차원을 가지는 텐서끼리 연결해준다. 이 때 axis는 차원의 index처럼 작용한다.

2차원인 경우 axis=0은 행 차원, axis=1은 열차원, 인덱스의 -1처럼 역순으로도 작용가능

그냥 테트리스처럼 합쳐지는 형태라 합쳐진 결과 텐서의 차원은 변하지 않는다.

[[0,1] <-텐서 1과 [[4, 5] <- 텐서 2를 axis=1(열기준)

[2,3]] ㅡㅡㅡㅡㅡ [6,7]]

[[0,1,4,5]

[2,3,6,7]]

이런 모양으로 합쳐져 차원(Rank)는 그대로 2이고 shape만 2 by 4로 변화한다.

tf.stack([텐서1, 텐서2,....], axis=)

같은 차원을 가지는 텐서끼리 연결해주는 것은 같지만, axis를 축으로 해서
새로운 차원을 하나 정해서 그 방향으로 각 텐서들을 쌓는다.

[0,1] <- 텐서 1과 [2,3] <- 텐서 2를 axis=0(행기준)으로 쌓으면

[[0,1]

[2,3]]

위와 같이 행방향으로 차원이 늘어나 2차원의 행렬로 변화한다.

마찬가지로 axis=1(열기준)으로 쌓으면

[[0, 2]

[1, 3]]

열방향으로 차원이 늘어나 2차원의 행렬로 바꿀 수 있다.

tf.expand_dims(원본 텐서, axis=)

원본 텐서의 차원에 axis에 해당하는 인덱스에 1차원을 끼워넣는다.

(2, 2)의 텐서에 axis=0에 넣는 경우 (1, 2, 2), axis=1에 넣는경우 (2, 1, 2)가 되는 방식이다.

tf.meshgrid(텐서1, 텐서2)

(보통) 1차원을 가지는 두 텐서를 가로축(행 성분)은 텐서 1의 크기만큼

세로축은 텐서 2의 크기만큼 broadcasting해준다.

결과값은 2차원을 가지는 두 텐서(행렬벡터)로 출력된다.

tf.tile(텐서1, 텐서2)

기본 요소인 텐서1을 기본 타일로 해서, 텐서2의 각 차원을 축으로 하여 성분만큼 붙여넣어 준다.

이 때 차원은 당연히 , 각각 차원에 붙여넣어지므로 repeat나 reshape의 효과를 줄 수 있다.

텐서 1이

[[0,1],

[2,3]]

형태의 (2,2) 텐서 일 때, 텐서 2가 (2,1)이라면, 첫번째 차원(행 차원)으로

두 번 타일 까는것처럼 붙여넣어주면 된다. 따라서

[[0,1],

[2,3],

[0,1],

[2,3]]

모양의 (4,2) 형태를 가지게 된다.

반대로 텐서 2가 (1,2)라면, 두번째 차원(열 차원)으로 두번 타일 깔듯이 붙여주면 되므로

[[0,1,0,1],

[2,3,2,3]]

이렇게 (2,4) 형태를 가진다.

0개의 댓글