小编N8_*_*der的帖子

Pytorch:将FloatTensor转换为DoubleTensor

我有2个numpy数组,我将其转换为张量以使用TensorDataset对象.

import torch.utils.data as data_utils

X = np.zeros((100,30))
Y = np.zeros((100,30))

train = data_utils.TensorDataset(torch.from_numpy(X).double(), torch.from_numpy(Y))
train_loader = data_utils.DataLoader(train, batch_size=50, shuffle=True)
Run Code Online (Sandbox Code Playgroud)

当我做:

for batch_idx, (data, target) in enumerate(train_loader):
    data, target = Variable(data), Variable(target)
    optimizer.zero_grad()
    output = model(data)               # error occurs here
Run Code Online (Sandbox Code Playgroud)

我得到了一个错误的错误:

TypeError:addmm_收到了一个无效的参数组合 - got(int,int,torch.DoubleTensor,torch.FloatTensor),但是期望的一个:[...]
*(浮点测试版,浮动阿尔法,火炬.DoubleTensor mat1,火炬. DoubleTensor mat2)不匹配,因为一些参数具有无效类型:(int,int,torch.DoubleTensor,torch.FloatTensor)
*(float beta,float alpha,torch.SparseDoubleTensor mat1,torch.DoubleTensor mat2)没有匹配,因为一些参数具有无效类型:(int,int,torch.DoubleTensor,torch.FloatTensor)

最后一个错误来自:

output.addmm_(0,1,input,weight.t())

正如你在我的代码中看到的那样,我尝试使用.double()来转换张量 - 但这不起作用.为什么他将一个数组转换为FloatTensor对象而另一个数组转换为DoubleTensor?有任何想法吗?

python torch pytorch

12
推荐指数
2
解决办法
2万
查看次数

PyTorch:正确提取学习的权重

我试图从线性层中提取权重,但它们似乎没有变化,尽管错误单调​​下降(即正在进行训练).打印权重的总和,没有任何反应,因为它保持不变:

np.sum(model.fc2.weight.data.numpy())

以下是代码段:

def train(epochs):
    model.train()
    for epoch in range(1, epochs+1):
        # Train on train set
        print(np.sum(model.fc2.weight.data.numpy()))
        for batch_idx, (data, target) in enumerate(train_loader):
            data, target = Variable(data), Variable(data)
            optimizer.zero_grad()
            output = model(data)
            loss = criterion(output, target)
            loss.backward()
            optimizer.step()
Run Code Online (Sandbox Code Playgroud)

# Define model
class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        # an affine operation: y = Wx + b
        self.fc1 = nn.Linear(100, 80, bias=False)
        init.normal(self.fc1.weight, mean=0, std=1)
        self.fc2 = nn.Linear(80, 87)
        self.fc3 = nn.Linear(87, 94)
        self.fc4 = nn.Linear(94, 100)

    def forward(self, x): …
Run Code Online (Sandbox Code Playgroud)

python pytorch

9
推荐指数
1
解决办法
1万
查看次数

如何使用 Plotly 创建具有 n 种颜色的离散颜色图

我想为Python中的绘图创建一个具有n种颜色的颜色图,它应该从一种颜色淡入另一种颜色。所有默认颜色图只有 10 个离散值,但我正在寻找具有 n > 10 个离散值的颜色图。

>>> px.colors.sequential.Plasma_r

['#f0f921',
 '#fdca26',
 '#fb9f3a',
 '#ed7953',
 '#d8576b',
 '#bd3786',
 '#9c179e',
 '#7201a8',
 '#46039f',
 '#0d0887']
Run Code Online (Sandbox Code Playgroud)

有没有办法将连续的地图分成n部分?

python plotly plotly-python

9
推荐指数
2
解决办法
1万
查看次数

Cron 作业与高级 Python 调度程序

如果你想运行你的 python 脚本,假设每天下午 6 点,是使用 crontab 条目还是使用高级 Python 调度程序解决方案来解决电源、内存、cpu ......消耗?

因此,在我看来,做老太婆工作更好,因为我看不到永久运行高级 Python 调度程序的优势。

python cron

6
推荐指数
1
解决办法
6989
查看次数

在C++中调用静态函数

我正在编写一个代码来处理C++中的向量.我有3个文件:main.cpp,Vektor.cpp和Vektor.h现在我想在main中调用一个静态funktion,它在Vektor.cpp中实现并在Vektor.h中声明."test"和"test2"是Vektor类的两个实例.Eclipse抛出一个错误,但我不知道为什么; 它说

此行的多个标记 - 无法解析函数'addieren' - 此范围内未声明'addieren' - 'endl'的无效重载 - 行断点:main.cpp [line:28]

哪里出错了?包括"Vektor.h".以下是必要的插条:

main.cpp中:

// ...
cout << "Summe: " << addieren(test,test2) << endl;
Run Code Online (Sandbox Code Playgroud)

Vektor.cpp:

Vektor Vektor::addieren(Vektor vektor1, Vektor vektor2)
{
Vektor vektorSumme;
vektorSumme.set_x(vektor1.get_x() + vektor2.get_x());
vektorSumme.set_y(vektor1.get_y() + vektor2.get_y());
vektorSumme.set_z(vektor1.get_z() + vektor2.get_z());
return vektorSumme;
} 
Run Code Online (Sandbox Code Playgroud)

Vektor.h:

class Vektor

{
//...
public:
  //...
static Vektor addieren(Vektor vektor1, Vektor vektor2);
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!!

c++ static-methods class

1
推荐指数
1
解决办法
1255
查看次数

标签 统计

python ×4

pytorch ×2

c++ ×1

class ×1

cron ×1

plotly ×1

plotly-python ×1

static-methods ×1

torch ×1