我刚开始使用Py火炬,即使是最简单的网络,我也无法在不产生错误的情况下向后运行()。例如:
(Linear(6, 6)(Variable(torch.zeros([10, 6]))) - Variable(torch.zeros([10, 6]))).backward()
引发以下错误
{RuntimeError}element 0 of variables does not require grad and does not have a grad_fn
我在代码中做错了什么来创建这个问题?
在我的Windows 10上,如果我直接创建一个GPU张量,我可以成功地释放它的内存。
import torch
a = torch.zeros(300000000, dtype=torch.int8, device='cuda')
del a
torch.cuda.empty_cache()
但是如果我创建一个正常张量并将它转换成GPU张量,我就不能再释放它的内存了。
import torch
a = torch.zeros(300000000, dtype=torch.int8)
a.cuda()
del a
torch.cuda.empty_cache()
为什么会发生这
我正在用代码实现nn.DataParallel类,并将我的所有模型封装在这个类中。它给出了一个错误歧义错误。
类码
import time
import os
import argparse
import numpy as np
import torch
import torch.optim as optim
import torch.optim.lr_scheduler as LS
import torch.nn as nn
import torch.nn.functional as F
from torch.autograd import Variable
import torch.u
假设我们有两个矩阵: mat = torch.randn([20, 7]) * 100
mat2 = torch.randn([7, 20]) * 100
n, m = mat.shape 最简单的常见矩阵乘法如下所示: def mat_vec_dot_product(mat, vect):
n, m = mat.shape
res = torch.zeros([n])
for i in range(n):
for j in range(m):
res[i] += mat[i][j] * vect[j]
在尝试初始化torch.zeros - torch.zeros((2000,2000,3200), device=device)时,我面临内存问题。
获取以下错误:
RuntimeError: CUDA out of memory. Tried to allocate 47.69 GiB (GPU 0; 8.00 GiB total capacity; 1.50 KiB already allocated; 6.16 GiB free; 2.00 MiB reserved in total by PyTorch)
我的问题是:为什么零张量需要那么大的记忆?还是我做错了什么?
我在另一个系统中与
什么是好使用火炬张量:复制或创造新张量?速度呢?目标是在每次调用方法时得到一个具有常数大小的新零张量。
class CopyOrCreateZeros:
def __init__(self):
self.fx = torch.zeros((800, 600))
pass
def method(self, x):
""" this method will be used many ofter e.g. in loop """
# do something
我正在更改/分配数组(torch.cuda.floatTensor)上的值。我试过一些方法,但行不通。请帮帮我!
#1
#dis is [torch.cuda.FloatTensor of size 3185x1 (GPU 0)]
s = dis.size(0) #3185
for i in range (0,s,1):
if (dis[i,0] < 0):
dis[i,0]== 0
#There is no error but It does not work.
#2
#dis is [torch.cuda.FloatTensor of size 3185x1
我正试着训练我的型号,批量大小为50。然而,我遇到了错误:
input.size(-1)必须等于input_size。预期763,got 1
我的代码是:
for epoch in range(1, n_epochs + 1):
for i, (x_batch, y_batch) in enumerate(trn_dl):
#model.to(device)
#model.train()
x_batch = x_batch.to(device)
y_batch = y_batch.to(device)
我正在尝试训练一个用于能源需求预测的LSTM,但这需要太长的时间。我不明白为什么,因为模型看起来很“简单”,而且没有太多的数据。会不会是因为我没有使用DataLoader?既然我有一个序列,我怎么能把它和RNN一起使用呢? 完整的代码在Colab中:https://colab.research.google.com/drive/130rG8_j1Lf8RQoVRrfXCeo5h_CcC5NU6?usp=sharing 需要改进的有趣部分可能是: for seq, y_train in train_data:
optimizer.zero_grad()
model.hidden
我试图自己编写一个Logistic回归,但是在初始化这个torch.zero()时发现了一个错误。
代码:
w = torch.normal(0, 0.01, size=(2,1), requires_grad=True)
b = torch.zeros(1,require_grad=True) # Error occured here
错误信息:
Traceback (most recent call last):
File "linearRegression.py", line 37, in <module>
b = torch.zeros(1,re
我正在尝试将字符串列表转换为张量,但是我得到了这个错误 lengths = [len(cap) for cap in captions]
targets = torch.zeros(len(captions), max(lengths)).long()
for i, cap in enumerate(captions):
end = lengths[i]
targets[i, :end] = cap[:end]
守则如下:
import torch
import numpy as np
x = torch.zeros((128, 3, 32, 32))
y = np.arange(128)
for i in range(len(y)):
x[i].uniform_(-y[i], y[i])
可以用类似于数组切片的方法替换for循环吗?谢谢
我遇到了几个使用RNN对MNIST数字进行分类的例子,用sequence_length=1初始化隐藏状态的原因是什么?如果你提前1步预测视频帧,你会如何初始化它?
def init_hidden(self, x, device=None): # input 4D tensor: (batch size, channels, width, height)
# initialize the hidden and cell state to zero
# vectors:(number of layer, sequence length, number of hidden nodes
我有用于训练A3C的训练函数的代码。我被以下错误困住了。
RuntimeError("grad can be implicitly created only for scalar outputs")
在线(policy_loss + 0.5 * value_loss).backward()
这是我的代码,有人能帮我检查一下这段代码有什么问题吗?
def train(rank, params, shared_model, optimizer,ticker):
torch.manual_seed(params.seed + rank) # shifting the seed wit