如何在 PyTorch 中构建具有两个输入的网络

     2023-02-23     13

关键词:

【中文标题】如何在 PyTorch 中构建具有两个输入的网络【英文标题】:How to construct a network with two inputs in PyTorch 【发布时间】:2019-01-13 00:08:46 【问题描述】:

假设我想拥有通用的神经网络架构:

Input1 --> CNNLayer 
                    \
                     ---> FCLayer ---> Output
                    /
Input2 --> FCLayer

Input1 是图像数据,input2 是非图像数据。我已经在 Tensorflow 中实现了这个架构。

我发现的所有 pytorch 示例都是通过每一层的一个输入。如何定义前向函数来分别处理 2 个输入,然后将它们组合在一个中间层中?

【问题讨论】:

【参考方案1】:

“组合它们”我假设您的意思是 concatenate 两个输入。 假设您沿着第二个维度连接:

import torch
from torch import nn

class TwoInputsNet(nn.Module):
  def __init__(self):
    super(TwoInputsNet, self).__init__()
    self.conv = nn.Conv2d( ... )  # set up your layer here
    self.fc1 = nn.Linear( ... )  # set up first FC layer
    self.fc2 = nn.Linear( ... )  # set up the other FC layer

  def forward(self, input1, input2):
    c = self.conv(input1)
    f = self.fc1(input2)
    # now we can reshape `c` and `f` to 2D and concat them
    combined = torch.cat((c.view(c.size(0), -1),
                          f.view(f.size(0), -1)), dim=1)
    out = self.fc2(combined)
    return out

请注意,当您定义self.fc2 的输入数量时,您需要同时考虑out_channelsself.conv 以及c 的输出空间维度。

【讨论】:

如果我的两个输入都是图像数据,我该如何进行连接?说 2 张昏暗 120X90 的灰度图像? @iCHAIT 你可以在“通道”维度上连接,只要它们的空间大小相同

tensorfloworpytorch

...比较突出,他们是两个最流行的深度学习库:TensorFlow和PyTorch。你没有办法指出这两个库有什么本质的不同,不用担心!我将在这网络上无休止的存储空间中添加一篇新的文章,也许可以帮你弄清楚一些问题。我将简要的快速的... 查看详情

如何在pytorch中连接两个不同尺寸的张量

】如何在pytorch中连接两个不同尺寸的张量【英文标题】:howtoconcatetwotensorswithdifferentdimensionsinpytorch【发布时间】:2022-01-1211:26:22【问题描述】:我在pytorch中有两个具有这些形状的张量:torch.Size([64,100])和torch.Size([64,100,256])我想... 查看详情

基于pytorch,如何构建一个简单的神经网络

本文为PyTorch官方教程中:如何构建神经网络。基于PyTorch专门构建神经网络的子模块torch.nn构建一个简单的神经网络。完整教程运行codelab→https://openbayes.com/console/open-tutorials/containers/OgcYkLjKw89torch.nn文档→https://pytorch.org/docs/stab... 查看详情

交叉熵损失 Pytorch

】交叉熵损失Pytorch【英文标题】:CrossEntropyLossPytorch【发布时间】:2021-08-2510:17:24【问题描述】:我有一个关于在我的pytorch-网络中优化交叉熵损失的问题。我正在构建一个预测体积图片的3D分割的网络。我有一个背景类或一个... 查看详情

如何在 Keras 中组合两个具有不同输入大小的 LSTM 层?

】如何在Keras中组合两个具有不同输入大小的LSTM层?【英文标题】:HowtocombinetwoLSTMlayerswithdifferentinputsizesinKeras?【发布时间】:2020-06-2600:19:36【问题描述】:我有两种类型的输入序列,其中input1包含50个值,input2包含25个值。我尝... 查看详情

如何使用pytorch同时迭代两个数据加载器?

】如何使用pytorch同时迭代两个数据加载器?【英文标题】:Howtoiterateovertwodataloaderssimultaneouslyusingpytorch?【发布时间】:2018-12-2820:31:49【问题描述】:我正在尝试实现一个接收两个图像的连体网络。我加载这些图像并创建两个单... 查看详情

如何使用 pytorch 构建多任务 DNN,例如 100 多个任务?

】如何使用pytorch构建多任务DNN,例如100多个任务?【英文标题】:Howtousepytorchtoconstructmulti-taskDNN,e.g.,formorethan100tasks?【发布时间】:2020-05-0222:47:40【问题描述】:以下是使用pytorch为两个回归任务构建DNN的示例代码。forward函数返... 查看详情

如何使用 tensorflow 构建多输入图?

】如何使用tensorflow构建多输入图?【英文标题】:Howtobuildamultipleinputgraphwithtensorflow?【发布时间】:2017-03-1203:15:39【问题描述】:是否可以定义具有多个输入的TensorFlow图?例如,我想给图表两个图像和一个文本,每个都由一堆... 查看详情

pytorch学习笔记(9)通过dataset、datasetloader构建模型输入数据集

参考技术A如何将我们准备好的数据放入模型中呢?Pytorch给出的答案都在torch.utils.data包中。这个模块中方法并不多,所以让我们先全部列出来看看,看看名字猜猜功能。一般情况下,使用Dataset和DatasetLoader两个类已经可以完成大... 查看详情

如何在 PyTorch 中高效实现非全连接线性层?

】如何在PyTorch中高效实现非全连接线性层?【英文标题】:Howtoefficientlyimplementanon-fullyconnectedLinearLayerinPyTorch?【发布时间】:2022-01-1302:08:09【问题描述】:我制作了一个我正在尝试实现的缩小版本的示例图:所以顶部的两个输入... 查看详情

PyTorch 中文本输入的卷积神经网络

】PyTorch中文本输入的卷积神经网络【英文标题】:ConvolutionalNNfortextinputinPyTorch【发布时间】:2017-10-2800:17:26【问题描述】:我正在尝试使用CNN实现textclassificationmodel。据我所知,对于文本数据,我们应该使用1dConvolutions。我在pyto... 查看详情

基于pytorch使用实现cnn如何使用pytorch构建cnn卷积神经网络(代码片段)

基于pytorch使用实现CNN如何使用pytorch构建CNN卷积神经网络本文是一个基于pytorch使用CNN在生物信息学上进行位点预测的例子基于pytorch实现CNN,基于CNN进行位点预测,将CNN代码进行封装,可以非常简单的使用代码,基... 查看详情

使用pytorch构建神经网络的流程以及一些问题(代码片段)

使用PyTorch构建神经网络十分的简单,下面是我总结的PyTorch构建神经网络的一般过程以及我在学习当中遇到的一些问题,期望对你有所帮助。PyTorch构建神经网络的一般过程下面的程序是PyTorch官网60分钟教程上面构建神经网络的例... 查看详情

基于pytorch的深度学习入门教程——构建神经网络

前言本文参考PyTorch官网的教程,分为五个基本模块来介绍PyTorch。为了避免文章过长,这五个模块分别在五篇博文中介绍。Part1:PyTorch简单知识Part2:PyTorch的自动梯度计算Part3:使用PyTorch构建一个神经网络Part4&... 查看详情

如何在 Pytorch 的“nn.Sequential”中展平输入

】如何在Pytorch的“nn.Sequential”中展平输入【英文标题】:howtoflatteninputin`nn.Sequential`inPytorch【发布时间】:2019-05-2523:30:54【问题描述】:如何在nn.Sequential中展平输入Model=nn.Sequential(x.view(x.shape[0],-1),nn.Linear(784,256),nn.ReLU(),nn.Linear(25... 查看详情

构建具有多个图的网络

】构建具有多个图的网络【英文标题】:Constructinganetworkwithmultiplegraphs【发布时间】:2021-11-1106:34:18【问题描述】:我想创建一个由图形副本组成的网络,例如空手道俱乐部网络。所以,我希望我的整个网络有,例如,空手道俱... 查看详情

如何编写具有两个输入的 fit_transformer 并将其包含在 python sklearn 的管道中?

】如何编写具有两个输入的fit_transformer并将其包含在pythonsklearn的管道中?【英文标题】:Howtowriteafit_transformerwithtwoinputsandincludeitinapipelineinpythonsklearn?【发布时间】:2017-01-2614:56:58【问题描述】:鉴于一些虚假数据:X=pd.DataFrame(np... 查看详情

如何使用pytorch同时迭代两个数据加载器?(代码片段)

我正在尝试实现一个接收两个图像的Siamese网络。我加载这些图像并创建两个单独的数据加载器。在我的循环中,我想同时浏览两个数据加载器,以便我可以在两个图像上训练网络。fori,datainenumerate(zip(dataloaders1,dataloaders2)):#getthein... 查看详情