

pytorchで学習したモデルの推論を行いたいです。  
モデルは、入力は2つ、出力は１つです。  
そのため、入力を２つ入れて推論を行おうとしましたが、うまく動きません。  
どうすればうまく動かせるのですか？

[code]

    x_1 = np.arange(0.49, 1+2*10**-3, 2*10**-3)   
    x_2 = [0.8 for i in range(len(x_1))]
    
                         
    x_test1 = torch.from_numpy(x_1.astype(np.float32)).float().to(device)       # xをテンソルに変換
    x_test2 = torch.from_numpy(np.array(x_2).astype(np.float32)).float().to(device)       # xをテンソルに変換
    
    X_test = torch.stack([x_test1, x_test2], 1).to(device)
    
    net.eval()
    a = []
    for i in enumerate(X_test):
        outputs = net(i)
        a.append(outputs)
    
[/code]

エラー

[code]

    TypeError                                 Traceback (most recent call last)
    <ipython-input-69-78f9e90abbc3> in <module>()
          9 
         10 for i in enumerate(X_test):
    ---> 11     outputs = net(i)
         12     a.append(outputs)
         13 
    
    4 frames
    /usr/local/lib/python3.7/dist-packages/torch/nn/functional.py in linear(input, weight, bias)
       1846     if has_torch_function_variadic(input, weight, bias):
       1847         return handle_torch_function(linear, (input, weight, bias), input, weight, bias=bias)
    -> 1848     return torch._C._nn.linear(input, weight, bias)
       1849 
       1850 
    
    TypeError: linear(): argument 'input' (position 1) must be Tensor, not tuple
    
[/code]


CC BY-SA 4.0
2022-03-03T14:18:42.820
86673
2023-06-29T13:04:50.670
42741
question
python 機械学習 pytorch
TypeError: linear(): argument 'input' (position 1) must be Tensor, not tupleをうまく解消できない


forループにおける[enumerate関数の説明](https://docs.python.org/ja/3/library/functions.html#enumerate)では  
インデックスとオブジェクトのtupleを返すようになっています。

おそらくnet関数の引数はTensorである必要があると思うので、  
単にTensorが欲しいのであればX_TestがTensorを要素に持つリストであることを前提に以下のように書き換えてみてはいかがでしょうか。

[code]

    for x in X_test:
        outputs = net(x)
        a.append(outputs) 
    
[/code]


CC BY-SA 4.0
2022-03-03T23:35:06.013
86677
2022-03-03T23:35:06.013
51317
86673
answer