当前位置: 首页 > 知识库问答 >
问题:

pytorch线性方法中的多维输入?

爱琪
2023-03-14

在建立一个简单的感知器神经网络时,我们通常将输入格式为(batch_size,features)的二维矩阵传递给一个二维权重矩阵,类似于这个简单的神经网络的numpy。我总是假设一个神经网络的感知器/密集/线性层只接受一个2D格式的输入并输出另一个2D输出。但是最近我遇到了这个pytorch模型,其中一个线性层接受一个3D输入张量并输出另一个3D张量(O1=self.a1(x))。

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim

class Net(nn.Module):
    def __init__(self):
        super().__init__()
        self.a1 = nn.Linear(4,4)
        self.a2 = nn.Linear(4,4)
        self.a3 = nn.Linear(9,1)
    def forward(self,x):
        o1 = self.a1(x)
        o2 = self.a2(x).transpose(1,2)
        output = torch.bmm(o1,o2)
        output = output.view(len(x),9)
        output = self.a3(output)
        return output

x = torch.randn(10,3,4)
y = torch.ones(10,1)

net = Net()

criterion = nn.MSELoss()
optimizer = optim.Adam(net.parameters())

for i in range(10):
    net.zero_grad()
    output = net(x)
    loss = criterion(output,y)
    loss.backward()
    optimizer.step()
    print(loss.item())

这些就是我的问题,

  1. 上述神经网络是否有效?这就是模型是否能够正确地训练?
  2. 即使在传递3D输入x=torch.randn(10,3,4)之后,为什么pytorchnn.linear没有显示任何错误并给出3D输出?

共有1个答案

洪祺
2023-03-14

新版本的PyTorch允许nn.linear接受N-D输入张量,唯一的限制是输入张量的最后一个维度将等于线性层的in_features。然后在张量的最后一个维度上应用线性变换
例如,如果in_features=5out_features=10并且输入张量x具有2-3-5维度,那么输出张量将具有2-3-10维度。

 类似资料:
  • 我想在Pytorch中实现多变量输入的LSTM。 在这篇使用keras的文章https://machinelearningmastery.com/how-to-develop-lstm-models-for-time-series-forecasting/之后,输入数据的形状是(样本数、时间步数、并行特征数) 在keras,这似乎很容易:

  • 本文向大家介绍PyTorch搭建一维线性回归模型(二),包括了PyTorch搭建一维线性回归模型(二)的使用技巧和注意事项,需要的朋友参考一下 PyTorch基础入门二:PyTorch搭建一维线性回归模型 1)一维线性回归模型的理论基础 给定数据集,线性回归希望能够优化出一个好的函数,使得能够和尽可能接近。 如何才能学习到参数和呢?很简单,只需要确定如何衡量与之间的差别,我们一般通过损失函数(Lo

  • 我正在研究Pytorch的线性回归问题 我在单变量情况下取得了成功,但是当我执行多变量线性回归时,我得到了以下错误。我应该如何执行多变量线性回归? TypeError Traceback(最近调用最后一次)in()9optimizer.zero_grad()#渐变10输出=模型(输入)#输出--- /anaconda/envs/tensorflow/lib/python3.6/site-packa

  • 在本章中,我们将重点介绍使用TensorFlow进行线性回归实现的基本示例。逻辑回归或线性回归是用于对离散类别进行分类的监督机器学习方法。在本章中的目标是构建一个模型,用户可以通过该模型预测预测变量与一个或多个自变量之间的关系。 如果是因变量而变化,则认为是自变量。两个变量之间的这种关系可认为是线性的。两个变量的线性回归关系看起来就像下面提到的方程式一样 - 接下来,我们将设计一个线性回归算法,有

  • 本文向大家介绍pytorch实现线性拟合方式,包括了pytorch实现线性拟合方式的使用技巧和注意事项,需要的朋友参考一下 一维线性拟合 数据为y=4x+5加上噪音 结果: 多维: 以上这篇pytorch实现线性拟合方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 本文向大家介绍pytorch 转换矩阵的维数位置方法,包括了pytorch 转换矩阵的维数位置方法的使用技巧和注意事项,需要的朋友参考一下 例如: 以上这篇pytorch 转换矩阵的维数位置方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。