원본 텐서가 (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 와 같이 비트수를 뒤에 붙여 표시해주어야함
같은 차원을 가지는 텐서끼리 연결해준다. 이 때 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로 변화한다.
같은 차원을 가지는 텐서끼리 연결해주는 것은 같지만, axis를 축으로 해서
새로운 차원을 하나 정해서 그 방향으로 각 텐서들을 쌓는다.
[0,1] <- 텐서 1과 [2,3] <- 텐서 2를 axis=0(행기준)으로 쌓으면
[[0,1]
[2,3]]
위와 같이 행방향으로 차원이 늘어나 2차원의 행렬로 변화한다.
마찬가지로 axis=1(열기준)으로 쌓으면
[[0, 2]
[1, 3]]
열방향으로 차원이 늘어나 2차원의 행렬로 바꿀 수 있다.
원본 텐서의 차원에 axis에 해당하는 인덱스에 1차원을 끼워넣는다.
(2, 2)의 텐서에 axis=0에 넣는 경우 (1, 2, 2), axis=1에 넣는경우 (2, 1, 2)가 되는 방식이다.
(보통) 1차원을 가지는 두 텐서를 가로축(행 성분)은 텐서 1의 크기만큼
세로축은 텐서 2의 크기만큼 broadcasting해준다.
결과값은 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) 형태를 가진다.