tensorflow의 之의 tf.slice ()

재판 : 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]]

추천

출처www.cnblogs.com/happystudyeveryday/p/11073991.html