我有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?有任何想法吗?
我试图从线性层中提取权重,但它们似乎没有变化,尽管错误单调下降(即正在进行训练).打印权重的总和,没有任何反应,因为它保持不变:
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中的绘图创建一个具有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 脚本,假设每天下午 6 点,是使用 crontab 条目还是使用高级 Python 调度程序解决方案来解决电源、内存、cpu ......消耗?
因此,在我看来,做老太婆工作更好,因为我看不到永久运行高级 Python 调度程序的优势。
我正在编写一个代码来处理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)
谢谢你的帮助!!