Pytorchタイプエラー:torch.FloatTensorタイプのオブジェクトが必要ですが、torch.cuda.FloatTensorタイプが見つかりました。



Pytorch Type Error Expected Object Type Torch



Expected object of type torch.FloatTensor but found type torch.cuda.FloatTensor

Pytorchtのデバッグプロセス中に、データは計算のためにモデルに渡されます。このエラーが表示され、データ形式に問題があることを示します。モデルはGPU上にあり、パラメーターはCPUタイプである可能性があります。モデルはCPUであり、パラメーターはGPUタイプである可能性があります。これは、.cuda()を使用した変換によるものです。 2つの方法を解決できます。

1. FloatTensorが必要なので、モデルとデータをcpuにキャストし、GPUのモデルと入力をCPUに変換します。



device1=torch.device('cpu') Model_ft = model_ft.to(device1)# Convert the model to the cpu version. model_ft.train() Inputs = inputs.to(device1)# Converts input data to CPU version. Labels = labels.to(device1)# Converts the label to the CPU version. output = model_ft(inputs) _,preds = torch.max(output,1)

2.モデルとデータをGPUバージョンに変換します。パラメーターはcuda.FloatTensorであるため、モデルのパラメーターはcudaタイプです。キャスト入力とモデルはGPUで利用できます。

device1=torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') Model_ft = model_ft.to(device1)# Convert the model to the GPU version. model_ft.train() Inputs = inputs.to(device1)# Converts input data to GPU version. Labels = labels.to(device1)# converts the label to the GPU version. output = model_ft(inputs) _,preds = torch.max(output,1)