我正在尝试用pyTorch训练我的第一个神经网络(我不是一个程序员,只是一个困惑的化学家)。
网络本身应该接受1064个元素向量,并用浮点数对它们进行评级。
到目前为止,我遇到了各种各样的错误,从“浮动而不是长”到“目标1超出界限”。因此,我重新定义了dtype,修正了输入向量的维数,改变了损失函数,现在我在纠正当前错误时陷入了困境,使我回到了以前的错误。
即:
ValueError: Target size (torch.Size([1000])) must be the same as input size (torch.Size([1000, 1]))
在'loss=loss_c
我在训练一个3D-GAN来生成核磁共振量。我将我的模型定义如下:
###### Definition of the generator ######
class Generator(nn.Module):
def __init__(self, ngpu):
#super() makes Generator a subclass of nn.Module, so that it inherites all the methods of nn.Module
super(Generator, self).__init__()
self.ngpu = ngpu
#
下面是一个word2vec实现:
%reset -f
import torch
from torch.autograd import Variable
import numpy as np
import torch.functional as F
import torch.nn.functional as F
corpus = [
'this test',
'this separate test'
]
def get_input_layer(word_idx):
x = torch.zeros(vocabulary_size).fl
我知道这似乎是一个常见的问题,但我无法找到解决办法。我正在运行一个多标签的分类模型,并且存在张量大小的问题。
我的完整代码如下所示:
from transformers import DistilBertTokenizerFast, DistilBertForSequenceClassification
import torch
# Instantiating tokenizer and model
tokenizer = DistilBertTokenizerFast.from_pretrained('distilbert-base-cased')
model = Dist
当我使用均方误差损失时,我有一个输入张量X和一个形状相同的torch.Size([3, 1, 20, 20])的目标张量y,它给了我一个警告:
Using a target size (torch.Size([3, 1, 20, 20])) that is different to the input size (torch.Size([3, 1]))
但输入形状是torch.Size([3, 1, 20, 20])吗?
然后我得到了一个错误:
RuntimeError: The size of tensor a (3) must match the size of tensor b (20
我的输入标注大小为torch.size([30, 2, 96, 96, 96])
我的标签大小是torch.size([30, 96, 96, 96]),我将它们输入到我的损失函数中,如下所示:
loss = F.binary_cross_entropy(F.sigmoid(output),labels,torch.FloatTensor(CLASS_WEIGHTS).cuda())
当我运行这段代码时,我得到了
Value error:Target and input must have the same number of elements.target nelement(26542080
我有包含x和y的代码,这两个类型都是torch.autograd.variable.Variable。它们的形状是
torch.Size([30, 1, 9])
torch.Size([1, 9, 9])
我不明白的是,为什么下面的结果会导致不同的尺寸/形状?
z = x & y
print(z.shape)
哪种输出
torch.Size([30, 9, 9])
为什么z x & y**?后的 30*9*9的形状?** x 的形状为30*1*9, y 的形状为1*9*9, & 在 x & y**?**中的作用是什么?
我在PyTorch中使用一个简单的对象检测模型,并使用Pytoch模型进行推理。
当我在代码中使用简单的迭代器时
for k, image_path in enumerate(image_list):
image = imgproc.loadImage(image_path)
print(image.shape)
with torch.no_grad():
y, feature = net(x)
result = image.cuda()
它打印我们的可变大小的图像,如
torch.Size([1, 3, 384, 320])
我创建了一个代码,用卷积神经网络生成带有形状(12,12)的彩色图像分析矩阵。我的脚本的输入是形状为的(5,3,12,12)张量。我使用detach().numpy()去掉了值5和3。
剧本:
for k in range(5):
for l in range(3):
y=x[k][l].detach().numpy()
m,n= y.shape
im=np.pad(y,((1,1),(1,1)),'constant')
我有torch.Size的‘a’动作(1,64,32,32),torch.Size的‘b’动作(1,128,16,16)和torch.Size的‘c’动作(1,256,8,8)。我有: target = {'a': [], 'b': [], 'c': []}
for i in range(800):
target['a'].append(act['a'])
target['b'].append(act['b'])
我得到了以下错误:
/usr/localnfs/Compiler/python/Anaconda3-2019.07/lib/python3.7/site-packages/torch/nn/modules/loss.py:431:
UserWarning: Using a target size (torch.Size([30, 1])) that is different to the input size (torch.Size([30, 10])).
这可能会导致广播结果不正确。请确保它们的尺寸相同。
我想我知道为什么会发生这种事,但我不知道怎么解决。我使用的是损失函数torch.nn
如何使用nn.CrossEntrophyLoss()绕过?
注意:我尝试使用nn.BCELoss(),但它导致了不同的错误:ValueError: Using a target size (torch.Size([4])) that is different to the input size (torch.Size([4, 3, 32, 32])) is deprecated. Please ensure they have the same size.
我目前正在建立一个卷积的编码器-解码器网络,使用Conv1d层作为编码器,ConvTranspose1d层作为解码器。不巧的是,解码器的输出尺寸与编码器不匹配。
如何确保解码器形状与编码器形状匹配?
代码:
## Building the neural network
import torch
import torch.nn as nn
import torch.nn.functional as F
import numpy as np
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__(
我试图在自定义数据集上训练deeplabv3_resnet50模型,但是在尝试向前传递时得到错误ValueError: Expected more than 1 value per channel when training, got input size torch.Size([1, 256, 1, 1])。下面的最小示例会产生此错误:
import torch
import torchvision
model = torchvision.models.segmentation.deeplabv3_resnet50(weights="DEFAULT")
model.trai
我用shape (batch_size, sequence_lengh, depth)的输入数据训练了一个dynamic_rnn网络,该输入数据已被手动填充到最长示例的长度(在本例中为97),并将其保存为检查点。为了评估“真实世界数据”上的网络,我加载了检查点,并将未填充的数据馈送到恢复的输入张量(使用tf.Session.run())。我收到一个
ValueError: Cannot feed value of shape (1, 1, 32) for Tensor 'input_x:0', which has shape '(?, 97, 32)'
使用tf