我发现的所有回归示例都是您预测实数的示例,与分类不同的是,您没有模型在预测该数字时的置信度。我在强化学习中以另一种方式完成了输出,而不是平均值和标准差,然后您从该分布中采样。然后你就知道模型在预测每个值时有多自信。现在我找不到如何在 pytorch 中使用监督学习来做到这一点。问题是我不明白如何从分布中执行样本以在训练时获得实际值或我应该使用什么样的损失函数,不确定例如 MSE 或 L1Smooth 将如何工作。
是否有任何示例可以在 pytorch 中以稳健且最先进的方式完成此操作?
我在 NLP 项目中使用 Torchtext。我的系统中有一个预训练的嵌入,我想使用它。因此,我试过:
my_field.vocab.load_vectors(my_path)
Run Code Online (Sandbox Code Playgroud)
但是,显然,出于某种原因,这仅接受预先接受的嵌入的简短列表的名称。特别是,我收到此错误:
Got string input vector "my_path", but allowed pretrained vectors are ['charngram.100d', 'fasttext.en.300d', ..., 'glove.6B.300d']
Run Code Online (Sandbox Code Playgroud)
我发现了一些有类似问题的人,但到目前为止我能找到的解决方案是“更改 Torchtext 源代码”,如果可能的话,我宁愿避免这种情况。
有没有其他方法可以使用我的预训练嵌入?允许使用另一个西班牙语预训练嵌入的解决方案是可以接受的。
有些人似乎认为不清楚我在说什么。所以,如果标题和最后一个问题还不够:“我需要帮助在 Torchtext 中使用预先训练的西班牙语单词嵌入”。
我正在研究有关定义新的autograd函数的PyTorch教程。我要实现的autograd函数是一个包装器torch.nn.functional.max_pool1d
。这是我到目前为止的内容:
import numpy as np
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.autograd as tag
class SquareAndMaxPool1d(tag.Function):
@staticmethod
def forward(ctx, input, kernel_size, stride=None, padding=0, dilation=1, \
return_indices=False, ceil_mode=False):
ctx.save_for_backward( input )
inputC = input.clone() #copy input
inputC *= inputC
output = F.max_pool1d(inputC, kernel_size, stride=stride, \
padding=padding, dilation=dilation, \
return_indices=return_indices, \
ceil_mode=ceil_mode)
return output
@staticmethod
def backward(ctx, grad_output):
input, = ctx.saved_tensors
grad_input = get_max_pool1d_grad_somehow(grad_output)
return 2.0*input*grad_input
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何获得包装函数的梯度?我知道给出的示例很简单,但可能还有其他方法可以执行此操作,但是我想做的事情适合此框架,并且需要我实现一个autograd
功能。
编辑:检查了此博客文章后,我决定尝试以下操作backward …
我是第一次使用 pyTorch。我正在尝试安装它。我有多少种方法可以做到这一点?请提供相关步骤。
我有一批形状为[5,1,100,100]
( batch_size x dims x ht x wd
)的分割掩码,我必须在 tensorboardX 中使用 RGB 图像批次显示它们[5,3,100,100]
。我想在分割掩码的第二个轴上添加两个虚拟维度以使其[5,3,100,100]
在将其传递给torch.utils.make_grid
. 我曾尝试unsqueeze
,expand
并view
但我不能够做到这一点。有什么建议?
嗨,我正在尝试训练 DQN 来解决健身房的 Cartpole 问题。出于某种原因,损失看起来像这样(橙色线)。你们都可以看看我的代码并帮助解决这个问题吗?我已经对超参数进行了相当多的研究,所以我认为它们不是这里的问题。
class DQN(nn.Module):
def __init__(self, input_dim, output_dim):
super(DQN, self).__init__()
self.linear1 = nn.Linear(input_dim, 16)
self.linear2 = nn.Linear(16, 32)
self.linear3 = nn.Linear(32, 32)
self.linear4 = nn.Linear(32, output_dim)
def forward(self, x):
x = F.relu(self.linear1(x))
x = F.relu(self.linear2(x))
x = F.relu(self.linear3(x))
return self.linear4(x)
final_epsilon = 0.05
initial_epsilon = 1
epsilon_decay = 5000
global steps_done
steps_done = 0
def select_action(state):
global steps_done
sample = random.random()
eps_threshold = final_epsilon + (initial_epsilon - final_epsilon) * \
math.exp(-1. * steps_done / epsilon_decay) …
Run Code Online (Sandbox Code Playgroud) x = torch.tensor([3])
Run Code Online (Sandbox Code Playgroud)
我有张量对象
print(x)
Run Code Online (Sandbox Code Playgroud)
它给
tensor([3])
x.data[0]
给出tensor(3)
如何得到公正3
?
我有 2 个名为x和list 的张量,它们的定义如下:
x = torch.tensor(3)
list = torch.tensor([1,2,3,4,5])
Run Code Online (Sandbox Code Playgroud)
现在我想从list 中获取元素x的索引。预期的输出是一个整数:
2
Run Code Online (Sandbox Code Playgroud)
我怎样才能以简单的方式做到这一点?
我想在pytorch中实现以下距离损失功能。我正在关注pytorch论坛上的https://discuss.pytorch.org/t/custom-loss-functions/29387/4主题
np.linalg.norm(output - target)
# where output.shape = [1, 2] and target.shape = [1, 2]
Run Code Online (Sandbox Code Playgroud)
所以我实现了这样的损失功能
def my_loss(output, target):
loss = torch.tensor(np.linalg.norm(output.detach().numpy() - target.detach().numpy()))
return loss
Run Code Online (Sandbox Code Playgroud)
使用此损失函数,向后调用会产生运行时错误
RuntimeError: element 0 of tensors does not require grad and does not have a grad_fn
Run Code Online (Sandbox Code Playgroud)
我的整个代码看起来像这样
model = nn.Linear(2, 2)
x = torch.randn(1, 2)
target = torch.randn(1, 2)
output = model(x)
loss = my_loss(output, target)
loss.backward() <----- Error here
print(model.weight.grad)
Run Code Online (Sandbox Code Playgroud)
PS:我知道pytorch是成对丢失的,但是由于它的某些限制,我必须自己实现。
按照pytorch源代码,我尝试了以下操作,
class my_function(torch.nn.Module): # forgot to define backward()
def forward(self, …
Run Code Online (Sandbox Code Playgroud) 我有一个大小为[100,70,42]的3D张量(批处理,seq_len,要素),我想通过使用基于线性变换的神经网络来获取大小为[100,1,1]的张量。在Pytorch中为线性)。
我已经实现了以下代码
class Network(nn.Module):
def __init__(self):
super(Network, self).__init__()
self.fc1 = nn.Linear(42, 120)
self.fc2 = nn.Linear(120,1)
def forward(self, input):
model = nn.Sequential(self.fc1,
nn.ReLU(),
self.fc2)
output = model(input)
return output
Run Code Online (Sandbox Code Playgroud)
但是,在训练后,这只会给我输出[100,70,1]的形状,这不是期望的形状。
谢谢!
neural-network dimensionality-reduction deep-learning pytorch tensor
pytorch ×10
python ×4
tensor ×3
python-3.x ×2
autograd ×1
intel ×1
nlp ×1
openai-gym ×1
tensorboard ×1
torch ×1
torchtext ×1