재판 : HTTPS : //www.jianshu.com/p/71e6ef6c121b
https://www.cnblogs.com/chamie/p/11073363.html
데프 슬라이스 (입력 _, 시작, 크기, 이름 = 없음)
"입력 _는"사용자가 입력 한 텐서 인 경우, 그 절단하는 것입니다.
아래에서 자세히, 각 차원의 시작은이 "시작".
"크기"각 차원은 몇 가지 요소를 가지고 물어 동일합니다.
예 1 아래 참조 :
t = tf.constant ([[[1, 1, 1], [2, 2, 2], [3, 3, 3], [4, 4, 4], [5, 5, 5 ], [6, 6, 6]]) tf.slice (t [1, 0, 0], [1, 1, 3)
이 출력은 다음과 같습니다
[[[3, 3, 3]
우선, 3 차원 어레이 t 같이, 먼저 자신의 형상은 [3,2,3]을 이해해야한다.
모양:
이것은을 형성하는 방법은? 의 이해 등이 t 모양을 깰 수 있습니다. 다음으로 볼 수있다 t, 그냥 가장 바깥 괄호를 보면 괄호가 많이 있었다 :
t가 [A, B, C]는 #이 제 치수 =
그리고 그 각각은 같이 쓸 수있다 두 가지가 있습니다 :
A = [I, J, B = K, L]는, C = [m, n]을 # 1이 제 치수
마지막으로,이 I, J, K, L, m, n은한다 :
I = [1, 1, 1, J = 2, 2, 2, K = 3, 3, 3, L = 4, 4, 4, m = 5, 5, 5, N = 6, 6, 6] #이 제 치수
그래서 형상은 부 대괄호 [] 계층의 수이다.
t의 경우, 가장 바깥 쪽 괄호는 세 가지, 즉 A, B, C를 가지고 이들 세 가지의 각각은 두 개의 재료, I 및 J, K 및 L, m, n은 존재한다.
그들 각각의 내부 세 가지 수치가있다. 따라서, 모양의 t이다 [3,2,3] . 이것은 내가 그것을 이해하는 방법입니다.
일부분:
슬라이스를 설명하기 전에 알아야 할 한 가지 배열 인덱스 파이썬은 제로 점이다.
이 재단으로, 우리는 예를 살펴합니다 :
tf.slice (t [1, 0, 0], [1, 1, 3]) # 시작 = [1, 0, 0]
여기에 우리가 순서를 알고 시작하는 [1, 0, 0] [1, 1, 3]. 그들은 두 배열은 왼쪽에서 오른쪽으로, 각 번호는 차원을 나타내는 출신 감지, 크기가된다. 그 개시 평균 선두 위치보다도, [1, 0, 0] 즉, 입체적, 어디에서 각 차원 계산.
첫번째 차원은 [A, B, C]이다. 시작에서 [1, 0, 0] B.부터 카운트, 즉 1 둘째, 제 사이즈 B의 = K, L (아, 첫 번째 숫자의 크기가 2, 그 다음, B 및 C는 것 인 경우에만 B = K, L은, B가 유용 표현할 수없는 물품 여기 오전 참고 ) 촬영은 두 번째 숫자는 그 시작부터 카운트 K이며, 0이다. = [3, 3, 3, 세 번째 숫자 전에 제 치수 k는 즉 처음 세부터 카운트 0이다.
그리고 지금 당신은 바로 이해 할 수 있습니까? 세 이후이 시작하는 점을 알고, 크기 봐.
평균 크기는 각 차원은 여러 가지 요소를 가지고있다, 각 차원의 크기입니다. 최종 출력의 크기는 형상의 텐서되어야한다.
예 :
tf.slice (t [1, 0, 0], [1, 1, 3]) # 크기 = [1, 1, 3]
레인 1은 제 1 차원의 요소를 취할 수단 제 크기이다. t = [A, B, C ] 시작 부터 다음 B하는 노래 B 걸리는 일이다. 결과는 제 치수 [B]
둘째 크기는 제 치수 B = K, L] 1 시작하기 시작하는 K이고, k 번째를 취하고있다. 결과는 다음 두 번째 치수 [K] .
제 3 크기, 제 치수 K = [3, 3, 3, 제 3부터 시작한다. 3 3 그렇습니다, 수 세, 그것은 세 가지 (3)을 촬영해야 걸릴
[[[3, 3, 3]
예 2 :
t = tf.constant ([[[1, 1, 1], [2, 2, 2], [3, 3, 3], [4, 4, 4], [5, 5, 5 ], [6, 6, 6]]) tf.slice (t [1, 0, 0], [1, 2, 3)
첫 번째, 두 번째 모양은 간단 읽기. 여기서도 [1, 0, 0]으로 시작한다. 사이즈 제 차원 또는 [B]를 얻어. 그런 다음이 1, 2 아니라, 의미는 두 가지를 복용. B = [K, L]을 기억 하는가? 이것은해야 단지 K, K, 및 L 아니다. 3 즉 K = 3, 3, 3, L = 4, 4, 4가 얻어 슬라이스 인뿐만 삼차원 촬영.
요약하면, 촬영 사이즈 제 [B] . 제 치수 B 교체 [K, L] ,해진다 [K, L]가 . 삼차원는 [3/3, 3, L 개의 [4, 4를 대체하는 K에 넣고 1,4], 최종 결과를 교체 한 후에
[[[3, 3, 3], [4, 4, 4]
그것은 매우 간단 이해하지만, 생각의 방식에 익숙해되지 않을 수 없습니다.
예 3 :
t = tf.constant ([[[1, 1, 1], [2, 2, 2], [3, 3, 3], [4, 4, 4], [5, 5, 5 ], [6, 6, 6]]) tf.slice (t [1, 0, 0], [-1, -1, -1])
이 경우, 소스 코드의 단어 코멘트 :
'크기는 [I]를'-1, i는 슬라이스에 포함 된 차원의 모든 나머지 요소 인 경우. 즉,이 설정과 동일`크기 [내가] = input.dim_size (I) - [I] 시작`
입력 값의 크기가 -1 인 경우 즉, 다음 슬라이스 것이다 차원의 수의 나머지를 걸어. 상기 예에서, 시작 [1, 0, 0]. 입체적 후 결과 -1이다 : 첫번째 차원은 [B, C]을되며 제 치수 [K, L], [M, N]이고 제 치수 [[[3,3 3], [4,4,4-], [5,5,5], [6,6,6]]