Torch 학습 노트

Torch 노트 (2) 빠 른 입문
Torch 의 유일한 데이터 구 조 는 Tensor 입 니 다. 이 구 조 는 간결 하고 강력 하 며 행렬 류 의 수치 계산 에 매우 적합 합 니 다. Torch 에서 가장 중요 한 유형 입 니 다.이 Tensor 는 사실 다 차원 행렬 로 행렬 의 각종 조작 을 지원 합 니 다.여기 서 특별히 강조해 야 할 것 은 lua 의 배열 (사실은 table) 아래 표 시 는 1 에서 시작 되 기 때문에 Tensor 대상 의 아래 표 시 는 1 에서 시작 된다 는 것 이다.우 리 는 프로그램 원숭이 의 측면 에서 볼 때 먼저 Tensor 도 유형 이 있다. Tensor 가족 은 ByteTensor, CharTensor, Short Tensor, IntTensor, LongTensor, Float Tensor, DoubleTensor 등 몇 명의 구성원 이 있 는데 내 가 말 하지 않 아 도 글자 의 뜻 을 보면 이런 Tensor 각 식 이 무슨 뜻 을 나타 내 는 지 알 수 있다.기본적으로 DoubleTensor 입 니 다. 계산 이 편리 하기 위해 서 죠?그 다음 에 Tensor 의 구조 함수 입 니 다. 어떻게 Tensor 를 만 듭 니까? 자주 사용 하 는 것 은 다음 과 같 습 니 다.Torch 가 설 치 된 기계 에 "th" 명령 을 입력 하여 Torch 환경 에 들 어 갑 니 다.
th> a = torch.Tensor(2,4);print(a)
 0  0  0  0
 0  0  0  0
[torch.DoubleTensor of size 2x4]
th> a = torch.Tensor(2,4,2)                                                         
th> print(b)
(1,.,.) = 
  6.9414e-310  6.9414e-310
  5.0872e-317  2.3253e+251
  5.0450e+223  1.6304e-322
  6.9414e-310  5.0873e-317

(2,.,.) = 
  1.0277e-321  2.3715e-322
  5.0873e-317  5.9416e-313
  5.0873e-317   8.5010e-96
  6.9677e+252  1.6304e-322
[torch.DoubleTensor of size 2x4x2]

th> c = torch.IntTensor(2,3);print(c) --        
 1.0302e+07  0.0000e+00  1.7000e+09
 1.1000e+02  0.0000e+00  0.0000e+00
[torch.IntTensor of size 2x3]
torch.Tensor(sz1 [,sz2 [,sz3 [,sz4]]]])

위의 구조 함 수 는 sz1 x sz2 x sx3 x sz4 x... 의 N 차원 Tensor 를 만 드 는 것 입 니 다. 예 를 들 어 상기 Tensor 대상 b 는 2 x 4 x 2 의 3 차원 Tensor 입 니 다. 그러나 이렇게 정의 할 뿐 초기 화 되 지 않 았 기 때문에 할당 작업 이 필요 합 니 다.
th> torch.Tensor({{1,2,3,4}, {5,6,7,8}})
 1  2  3  4
 5  6  7  8
[torch.DoubleTensor of dimension 2x4]

위 는 lua 의 table 로 초기 화 되 어 있 습 니 다. 즉, 아래 형식 입 니 다.
torch.Tensor(table)

텐서 대상 을 사용 하여 초기 화 할 수도 있 습 니 다.
torch.Tensor(tensor)

각 Tensor 간 의 전환
th> a = torch.IntTensor({3,4,5,3,3});b = torch.DoubleTensor({3.3,4.9,3.2});c = b:typeAs(a);print(c);print(b)    
 3
 4
 3
[torch.IntTensor of size 3]

 3.3000
 4.9000
 3.2000
[torch.DoubleTensor of size 3]

Tensor 에서 요소 의 유형 변환 은 단순 한 숫자 가 아 닌 Tensor 대상 으로 돌아 가 는 것 을 주의 하 십시오.
[Tensor] byte(), char(), short(), int(), long(), float(), double()

Torch 에 Storage 클래스 도 있 는데 사실은 C 언어 에 대응 하 는 1 차원 배열 입 니 다. 일반 파일 작업 에 사용 되 고 공간 을 절약 하지만 관련 함수 가 풍부 하지 않 습 니 다. 이런 부분 에 ByteStorage, CharStorage, Short Storage, IntStorage, LongStorage, Float Storage, DoubleStorage 도 있 습 니 다. 대기 유형, 용법 과 Tensor 의 차이 가 많 지 않 습 니 다.Storage 는 1 차원 배열 에 해당 하기 때문에 다 차원 배열 을 만 들 수 있 습 니 다. (여기 도 초기 화 되 지 않 았 습 니 다)
th> x =torch.Tensor( torch.LongStorage({2,3,4}));print(x) 
(1,.,.) = 
  1.1132e+171  6.1707e-114  8.8211e+199  1.0167e-152
  5.7781e-114  7.3587e+223   2.9095e-14   6.9117e-72
  8.8211e+199  1.0167e-152   3.9232e-85   6.9183e-72

(2,.,.) = 
  1.3923e-259  2.2831e-109  1.6779e+243  7.3651e+228
  2.2082e-259  1.1132e+171  6.1707e-114  2.3253e+251
  5.0450e+223  2.8811e+159   1.1995e-22  2.1723e-153
[torch.DoubleTensor of size 2x3x4]

Tensor 대상 이 조작 할 때 C + + 에서 인용 하 는 것 과 같 기 때문에 그 자체 의 값 을 바 꿀 수 있 습 니 다. 모든 경우 백업 복사 작업 을 해 야 합 니 다. Lua 에서 "의 미 를 나타 내 는 것 은 클래스 의 구성원 을 나타 내 는 것 입 니 다."가방 (N, torch, optim) 등 그 중의 함 수 를 사용 할 때 만 ".." 을 사용 합 니 다.
th> a = torch.randn(3);b = a:clone();print(a,b)
-0.7112
 0.1953
-2.0389
[torch.DoubleTensor of size 3]

-0.7112
 0.1953
-2.0389
[torch.DoubleTensor of size 3]

Tensor 의 차원 dim (), 그리고 각 차원 의 구체 적 인 수치 size () 를 가 져 옵 니 다. 아래 에 표 시 된 Tensor a 의 1 차원 은 size (1) = 2, 2 차원 은 size (2) = 4 입 니 다.Tensor 요소 의 총 갯 수 nElement () 가 져 오기
th> a = torch.Tensor(2,4):zero();print(a);print(a:dim())
 0  0  0  0
 0  0  0  0
[torch.DoubleTensor of size 2x4]

2

th> print(a:size())                            
 2
 4
[torch.LongStorage of size 2]

th> print(a:nElement())
8

아래 표 시 된 접근 방식
x = torch.Tensor(3,3)
i = 0; x:apply(function() i = i + 1; return i end)
> x
 1  2  3
 4  5  6
 7  8  9
[torch.DoubleTensor of dimension 3x3]

> x[2] -- returns row 2
 4
 5
 6
[torch.DoubleTensor of dimension 3]

> x[2][3] -- returns row 2, column 3
6

> x[{2,3}] -- another way to return row 2, column 3
6

> x[torch.LongStorage{2,3}] -- yet another way to return row 2, column 3
6

요소 복사, 두 Tensor 의 요소 총수 만 같 으 면 됩 니 다. 행렬 모양 은 다 를 수 있 습 니 다.
x = torch.Tensor(4):fill(1)
y = torch.Tensor(2,2):copy(x)
> x
 1
 1
 1
 1
[torch.DoubleTensor of dimension 4]

> y
 1  1
 1  1
[torch.DoubleTensor of dimension 2x2]

Tensor 를 동적 으로 확장 해 야 할 때 유용 한 함수 resize (sz1 [, sz2 [, sz3 [, sz4]]]])
th> x = torch.randn(2,4):zero();print(x);print(x:resize(3,4))  
 0  0  0  0
 0  0  0  0
[torch.DoubleTensor of size 2x4]

  0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00
  0.0000e+00   0.0000e+00   0.0000e+00   0.0000e+00
 8.8211e+199  7.4861e-114   2.9085e-33  1.0251e+170
[torch.DoubleTensor of size 3x4]

아래 소 개 된 narrow (dim, index, size), sub (dim1s, dim1e..index 는 시작 위치 이 고 끝 위 치 는 index + size - 1 입 니 다.
th>3.5> x = torch.Tensor(5, 6):zero();y = x:narrow(1, 2, 3);y:fill(1);print(y);print(x)
 1  1  1  1  1  1
 1  1  1  1  1  1
 1  1  1  1  1  1
[torch.DoubleTensor of size 3x6]

 0  0  0  0  0  0
 1  1  1  1  1  1
 1  1  1  1  1  1
 1  1  1  1  1  1
 0  0  0  0  0  0
[torch.DoubleTensor of size 5x6]

th> x = torch.Tensor(5, 6):zero();y = x:narrow(2, 2, 3);y:fill(1);print(y);print(x) 
 1  1  1
 1  1  1
 1  1  1
 1  1  1
 1  1  1
[torch.DoubleTensor of size 5x3]

 0  1  1  1  0  0
 0  1  1  1  0  0
 0  1  1  1  0  0
 0  1  1  1  0  0
 0  1  1  1  0  0
[torch.DoubleTensor of size 5x6]

sub 중의 dim1s 는 첫 번 째 차원 의 시작 위 치 를 나타 내 고 dim1e 는 첫 번 째 차원 의 끝 위 치 를 나타 내 며 모두 마이너스 가 될 수 있다. - 1 은 마지막 위 치 를 나타 내 고 - 2 는 마지막 두 번 째 위 치 를 나타 낸다.
th> x = torch.Tensor(5, 6):zero();z = x:sub(2,4,3,4):fill(2);print(z);print(x)
 2  2
 2  2
 2  2
[torch.DoubleTensor of size 3x2]

 0  0  0  0  0  0
 0  0  2  2  0  0
 0  0  2  2  0  0
 0  0  2  2  0  0
 0  0  0  0  0  0
[torch.DoubleTensor of size 5x6]

select (dim, index) 가 되 돌아 오 는 Tensor 는 원래 의 Tensor 보다 1 차원 이 적 고 dim 은 여전히 몇 번 째 차원 을 나타 낸다.
th> x = torch.Tensor(5,6):zero();y = x:select(1, 2):fill(2);print(y);print(x)
 2
 2
 2
 2
 2
 2
[torch.DoubleTensor of size 6]

 0  0  0  0  0  0
 2  2  2  2  2  2
 0  0  0  0  0  0
 0  0  0  0  0  0
 0  0  0  0  0  0
[torch.DoubleTensor of size 5x6]

th> x = torch.Tensor(2,3,4):zero();y = x:select(1, 2):fill(2);print(y);print(x)   
 2  2  2  2
 2  2  2  2
 2  2  2  2
[torch.DoubleTensor of size 3x4]

(1,.,.) = 
  0  0  0  0
  0  0  0  0
  0  0  0  0

(2,.,.) = 
  2  2  2  2
  2  2  2  2
  2  2  2  2
[torch.DoubleTensor of size 2x3x4]

그리고 아래 표 조작 자 [{dim 1, dim 2,...}] or [{dim 1 s, dim 1 e}, {dim 2 s, dim 2}}] 도 Tensor 를 되 돌려 줍 니 다. 이런 방식 은 더욱 간결 하고 자주 사용 합 니 다.
th> x = torch.Tensor(3, 4):zero();x[{ 1,3 }] = 1;print(x) --  x[1][3] = 1   
 0  0  1  0
 0  0  0  0
 0  0  0  0
[torch.DoubleTensor of size 3x4]

th>3.5> x = torch.Tensor(3, 4):zero();x[{ 2,{2,4} }] = 1;print(x) -- 2     index = 2,{2,4}     index 2 4            
 0  0  0  0
 0  1  1  1
 0  0  0  0
[torch.DoubleTensor of size 3x4]

th>3.5> x = torch.Tensor(3, 4):zero();x[{ {},2 }] = torch.range(1,3);print(x)  -- {}          index,2       index = 2 range   Tensor IDTensor
 0  1  0  0
 0  2  0  0
 0  3  0  0
[torch.DoubleTensor of size 3x4]

th> x = torch.Tensor(3, 4):fill(5);x[{ {},2 }] = torch.range(1,3);x[torch.lt(x,3)] = -2;print(x) ; 
 5 -2  5  5
 5 -2  5  5
 5  3  5  5
[torch.DoubleTensor of size 3x4]

index (dim, index) 함수 가 다 릅 니 다. 되 돌아 오 는 Tensor 는 새로운 Tensor 입 니 다. 원래 의 Tensor 와 관계 가 없습니다. 여기 index 는 비교적 특수 합 니 다. LongTensor 형식 이 어야 합 니 다.
th> x = torch.randn(3,5);print(x);y = x:index(2,torch.range(2,4):typeAs(torch.LongTensor()));y:mul(100);print(y);print(x)
 0.6146 -0.3204 -1.2182  1.5573 -0.7232
-1.1692 -0.0071  3.1590  0.6008  0.4566
 0.1957 -0.4057  2.0835 -0.3365 -1.3541
[torch.DoubleTensor of size 3x5]

 -32.0396 -121.8182  155.7330
  -0.7097  315.9025   60.0773
 -40.5727  208.3459  -33.6517
[torch.DoubleTensor of size 3x3]

 0.6146 -0.3204 -1.2182  1.5573 -0.7232
-1.1692 -0.0071  3.1590  0.6008  0.4566
 0.1957 -0.4057  2.0835 -0.3365 -1.3541
[torch.DoubleTensor of size 3x5]

th>x = torch.randn(3,5);print(x);y = x:index(2,torch.LongTensor({1,4}));y:mul(100)print(y);print(x) --         index = 1  index = 4   Tensor  1   4     Tensor
-0.4880 -1.6397 -0.3257 -0.5051 -0.1214
-0.4002  1.3845  0.4411  0.1753  2.0174
 0.5882  0.9351 -0.7685  0.6377 -1.7308
[torch.DoubleTensor of size 3x5]

-48.8024 -50.5097
-40.0198  17.5341
 58.8207  63.7730
[torch.DoubleTensor of size 3x2]

-0.4880 -1.6397 -0.3257 -0.5051 -0.1214
-0.4002  1.3845  0.4411  0.1753  2.0174
 0.5882  0.9351 -0.7685  0.6377 -1.7308
[torch.DoubleTensor of size 3x5]

indexCopy (dim, index, tensor) 는 tensor 를 복사 합 니 다. index 도 LongTensor 형식 입 니 다. 유사 한 함수 로 indexAdd (dim, index, tensor), indexFill (dim, index, val) 도 있 습 니 다.
th> x = torch.randn(3,5);print(x);y = torch.Tensor(2,5);y:select(1,1):fill(-1);y:select(1,2):fill(-2);print(y);x:indexCopy(1,torch.LongTensor{3,1},y);print(x)
 0.8086  1.7714 -1.6337  0.2549  0.2131
 1.4018 -0.9938  0.3035  1.6247 -0.1368
 0.3516 -1.3728 -0.5203  0.2754 -1.6965
[torch.DoubleTensor of size 3x5]

-1 -1 -1 -1 -1
-2 -2 -2 -2 -2
[torch.DoubleTensor of size 2x5]

-2.0000 -2.0000 -2.0000 -2.0000 -2.0000
 1.4018 -0.9938  0.3035  1.6247 -0.1368
-1.0000 -1.0000 -1.0000 -1.0000 -1.0000
[torch.DoubleTensor of size 3x5]

여기 서 강조해 야 할 것 은 2 차원 Tensor 의 두 번 째 차원 이 1 일 때 이 Tensor 는 2 차원 입 니까?
--       Tensor
th> a = torch.Tensor({1,2,3,4,5});print("dim=" .. a:dim());print(a);print(a:size()) 
dim=1
 1
 2
 3
 4
 5
[torch.DoubleTensor of size 5]
 5
[torch.LongStorage of size 1]
[torch.LongStorage of size 1]
--        Tensor ,   5x1   Tensor 
th> x = torch.Tensor({1,2,3,4,5});y = x:reshape(a:size(1),1);print(y);print(y:dim())
 1
 2
 3
 4
 5
[torch.DoubleTensor of size 5x1]
2
--       
th> y = torch.Tensor({{1},{2},{3},{4},{5}});print(y);print(y:dim()) 
 1
 2
 3
 4
 5
[torch.DoubleTensor of size 5x1]
--       1x5   Tensor 
th> y = torch.Tensor({{1,2,3,4,5}});print(y);print(y:dim())                              
 1  2  3  4  5
[torch.DoubleTensor of size 1x5]
2
--        ,     Tensor ,size()         ,     ,      
th> x = torch.Tensor({1,2,3,4,5});y = x:reshape(1,a:size(1));print(y:dim());print(y);;print(y:size())
2
 1  2  3  4  5
[torch.DoubleTensor of size 1x5]
 1
 5
[torch.LongStorage of size 2]

gather (dim, index) 에서 지정 한 영역의 데 이 터 를 추출 합 니 다. 그 중에서 index 의 위 수 는 마지막 으로 출력 한 Tensor 모양 (차원, 출력 Tensor 모양 은 mxn 이 고 index 는 mxn 이 어야 합 니 다) 과 같 아야 하 며 데이터 형식 은 LongTensor 입 니 다.
-- dim = 1
result[i][j][k]... = src[index[i][j][k]...][j][k]...
-- dim = 2
result[i][j][k]... = src[i][index[i][j][k]...][k]...
-- etc.
-- src     Tensor
--              ,     nx1       (Tensor:dim() = 2), index   nx1       LongTensor

th> x = torch.rand(5, 5);print(x);y = x:gather(1, torch.LongTensor{{1, 2, 3, 4, 5}, {2, 3, 4, 5, 1}});print(y)
 0.2188  0.3625  0.7812  0.2781  0.9327
 0.5342  0.3879  0.7225  0.6031  0.7325
 0.1464  0.4534  0.5134  0.9993  0.6617
 0.0594  0.6398  0.1741  0.7357  0.6613
 0.2926  0.7286  0.7255  0.7108  0.1820
[torch.DoubleTensor of size 5x5]

 0.2188  0.3879  0.5134  0.7357  0.1820
 0.5342  0.4534  0.1741  0.7108  0.9327
[torch.DoubleTensor of size 2x5]
--             (1,1),(2,2),(3,3),(4,4),(5,5)  1x5(  Tensor) Tensor   index = torch.LongTensor({{1, 2, 3, 4, 5}});  y = x:gather(1, index)    index 1x5   Tensor
--         (1,2),(2,3),(3,4),(4,5),(5,1) 1x5Tensor,index = torch.LongTensor({{5,1, 2, 3, 4}});  y = x:gather(1, index)  index = torch.LongTensor({{2, 3, 4, 5,1}});  y = x:gather(2, index)
--     
th> x = torch.rand(5, 5);print(x);y = x:gather(2, torch.LongTensor({ {1,2},{2,3},{3,4},{4,5},{5,1} }) );print(y)    
 0.8563  0.2664  0.6895  0.8124  0.0788
 0.0503  0.6646  0.7659  0.4013  0.0670
 0.4760  0.0517  0.9621  0.7437  0.1162
 0.4069  0.9932  0.6118  0.6200  0.3585
 0.9795  0.9601  0.9098  0.4714  0.5577
[torch.DoubleTensor of size 5x5]

 0.8563  0.2664
 0.6646  0.7659
 0.9621  0.7437
 0.6200  0.3585
 0.5577  0.9795
[torch.DoubleTensor of size 5x2]

scatter (dim, index, src | val) 는 다른 Tensor src 또는 스칼라 값 val 을 자신의 매개 변수 의미 와 gather 에 기록 하 는 것 입 니 다.
x = torch.rand(2, 5)
> x
 0.3227  0.4294  0.8476  0.9414  0.1159
 0.7338  0.5185  0.2947  0.0578  0.1273
[torch.DoubleTensor of size 2x5]

y = torch.zeros(3, 5):scatter(1, torch.LongTensor{{1, 2, 3, 1, 1}, {3, 1, 1, 2, 3}}, x)
> y
 0.3227  0.5185  0.2947  0.9414  0.1159
 0.0000  0.4294  0.0000  0.0578  0.0000
 0.7338  0.0000  0.8476  0.0000  0.1273
[torch.DoubleTensor of size 3x5]

z = torch.zeros(2, 4):scatter(2, torch.LongTensor{{3}, {4}}, 1.23)
> z
 0.0000  0.0000  1.2300  0.0000
 0.0000  0.0000  0.0000  1.2300
[torch.DoubleTensor of size 2x4]

nonzero (tensor) 는 nx2 LongTensor 를 되 돌려 줍 니 다. 원래 Tensor 의 모든 0 값 이 아 닌 아래 표 와 값 을 포함 합 니 다.
th> x = torch.rand(4, 4):mul(3):floor():int();y = torch.nonzero(x);print(x);print(y) 
 2  1  0  2
 2  1  2  1
 1  0  1  0
 2  0  2  2
[torch.IntTensor of size 4x4]

 1  1
 1  2
 1  4
 2  1
 2  2
 2  3
 2  4
 3  1
 3  3
 4  1
 4  3
 4  4
[torch.LongTensor of size 12x2]

transpose (dim 1, dim 2) 또는 직접 t () 를 설정 합 니 다. 2 차원 Tensor 에 만 유용 합 니 다. 다 차원 tensor 에 permute (dim 1, dim 2,..., dim) 를 설정 합 니 다.
x = torch.Tensor(3,4,2,5)
> x:size()
 3
 4
 2
 5
[torch.LongStorage of size 4]

y = x:permute(2,3,1,4) --     y = x:transpose(1,3):transpose(1,2)
> y:size()
 4
 2
 3
 5
[torch.LongStorage of size 4]

그리고 tensor 대상 요소 마다 함수 처리 apply (function)
 = 0
z = torch.Tensor(3,3)
z:apply(function(x)
  i = i + 1
  return i
end)
> z
 1  2  3
 4  5  6
 7  8  9
[torch.DoubleTensor of dimension 3x3]

두 개의 tensor 의 모든 요소 에 대해 map (tensor, function (xs, xt) 를 처리 합 니 다.
x = torch.Tensor(3,3)
y = torch.Tensor(9)
i = 0
x:apply(function() i = i + 1; return i end) -- fill-up x
i = 0
y:apply(function() i = i + 1; return i end) -- fill-up y
> x
 1  2  3
 4  5  6
 7  8  9
[torch.DoubleTensor of dimension 3x3]
> y
 1
 2
 3
 4
 5
 6
 7
 8
 9
[torch.DoubleTensor of dimension 9]
th> z =x:map(y, function(xx, yy) return xx*xx + yy end);print(z)
  2   6  12
 20  30  42
 56  72  90
[torch.DoubleTensor of size 3x3]

tensor 를 분할 split ([result,] tensor, size, [dim]), size 는 절 분 된 단위 (크기), dim 은 지정 한 차원, 즉 그 차원 에서 절 분 됩 니 다.
th> x = torch.randn(3,10,15) 
th> x:split(2,1)             
{
  1 : DoubleTensor - size: 2x10x15
  2 : DoubleTensor - size: 1x10x15
}
                                                                      [0.0003s]
th> x:split(4,2)             
{
  1 : DoubleTensor - size: 3x4x15
  2 : DoubleTensor - size: 3x4x15
  3 : DoubleTensor - size: 3x2x15
}
                                                                      [0.0004s]
th> x:split(5,3)    
{
  1 : DoubleTensor - size: 3x10x5
  2 : DoubleTensor - size: 3x10x5
  3 : DoubleTensor - size: 3x10x5
}

그 다음 에 일부 tensor 의 Math 조작 함수, 예 를 들 어 sum, add, sub, mul, div, mode, max, min, std, mean, pow, rand, randn, log, range, exp, abs, floor, sqrt 등 많은 Math 홈 페이지 등 함수 들 이 torch 가방 에 많이 사용 되 기 때문에 mean = torch. mean (x) 도 있 고 mean = x: mean () 도 있 습 니 다.
th> x = torch.range(1,15,3);print(x);print(x:mean());print(torch.mean(x))
  1
  4
  7
 10
 13
[torch.DoubleTensor of size 5]

7
7

또 하 나 는 torch. sort ([resval, resind,] x [, dim] [, flag]) 입 니 다. 기본 상승 순 서 는 두 개의 tensor 로 돌아 갑 니 다. 첫 번 째 는 순 서 를 배열 한 tensor 이 고 두 번 째 는 순 서 를 배열 한 tensor 입 니 다. 각 요소 에 대응 하 는 아래 표 시 된 tensor 입 니 다.
th> x = torch.Tensor({8.3,3.4,5.7,1.7,9.3});y,index = x:sort(true);print(y,index) 
--        y,index = torch.sort(x,true);print(y,index) 
 9.3000
 8.3000
 5.7000
 3.4000
 1.7000
[torch.DoubleTensor of size 5]

 5
 1
 3
 2
 4
[torch.LongTensor of size 5]

다음 Torch 는 선형 회 귀 를 실현 합 니 다.

좋은 웹페이지 즐겨찾기