簡體   English   中英

TypeError: 'torch.dtype' object 不可調用。 這個function怎么稱呼?

[英]TypeError: 'torch.dtype' object is not callable. how to call this function?

如何調用這個 torch.dtype? 因為這里的錯誤表明它不可調用。 在我使用 floatTensor 之前它顯示這樣的錯誤can't convert np.ndarray of type numpy.object_現在我使用 float64 它顯示錯誤'torch.dtype' object is not callable 請幫忙解決這個問題。

import torch
    a = torch.cuda.is_available()
    b = torch.cuda.current_device()
    c = torch.cuda.get_device_name()
    d = torch.cuda.memory_reserved()
    e = torch.cuda.memory_allocated()
    var1 = torch.FloatTensor([1.0,2.0,3.0]).cuda()
    var1
    a1 = var1.device
    import pandas as pd
    df = pd.read_csv('diabetes.csv')
    df.head()
    b1 = df.isnull().sum()
    import seaborn as sns
    import numpy as np
    df['Outcome']=np.where(df['Outcome']==1,"Diabetic","No Diabetic")
    b2 = df.head()
    b3 = sns.pairplot(df,hue="Outcome")
    
    X=df.drop('Outcome',axis=1).values
    y=df['Outcome'].values
    
    from sklearn.model_selection import train_test_split
    
    X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.2,random_state=0)
    y_train
    
    import torch
    import torch.nn as nn
    import torch.nn.functional as F
    
    X_train=torch.FloatTensor(X_train).cuda()
    X_test=torch.FloatTensor(X_test).cuda()
    y_train=torch.float64(y_train).cuda()

這是錯誤:

 C:\Users\vinot\.conda\envs\python21\python.exe D:/python/python_work/pythonProject/diabetes.py
    Traceback (most recent call last):
      File "D:/python/python_work/pythonProject/diabetes.py", line 35, in <module>
        y_train=torch.float64(y_train).cuda()
    TypeError: 'torch.dtype' object is not callable
    
    Process finished with exit code 1

torch.float64 是 dtype object 而不是 function 所以它不能被調用。

為了使它成為雙浮點數(或至少確保它是),我會改為調用:

y_train = torch.from_numpy(y_train).double().cuda()

在 PyTorch 中,可以通過Tensor.type(dtype)更改 Tensor 的類型,您可以通過此鏈接查看您需要的類型。 此外,我建議您首先檢查您的 GPU 是否可用,然后用 select float32代替float64 (在大多數情況下,32 位足夠復雜)。 所以那條線應該變成:

device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
y_train = y_train.type(torch.float).to(device) # change torch.float to torch.float64 if you still want to use float 64

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM