Pytorch 定义MyDatasets实现多通道分别输入不同数据方式

最近在做一个项目,用双通道神经网络,每个通道输入不同数据训练,具有相同label。开始没想到如何实现,网上很多例子都是单通道,即便找到双通道的例子,两个通道的输入也相同。

最后,终于想到了一个办法。多输入和单输入其实是一样的,只需要重新改写torch.utils.data.Datasets. 需要改写class Dataset里面的init、len和getitem

一个例子:

 class MyDataset(data.Dataset):
  def __init__(self, data1,data2, labels):
    self.data1= data1
    self.data2= data2
    self.labels = labels # 我的例子中label是一样的,如果你的不同,再增加一个即可

  def __getitem__(self, index):
    img1,img2, target = self.data1[index], self.data2[index], self.labels[index]
    return img1,img2, target

  def __len__(self):
    return len(self.data1) # 我的例子中len(self.data1) = len(self.data2)

以上这篇Pytorch 定义MyDatasets实现多通道分别输入不同数据方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • pytorch 实现在预训练模型的 input上增减通道

    如何把imagenet预训练的模型,输入层的通道数随心所欲的修改,从而来适应自己的任务 #增加一个通道 w = layers[0].weight layers[0] = nn.Conv2d(4, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False) layers[0].weight = torch.nn.Parameter(torch.cat((w, w[:, :1, :, :]), dim=1)) #方式2 w =

  • pytorch实现对输入超过三通道的数据进行训练

    案例背景:视频识别 假设每次输入是8s的灰度视频,视频帧率为25fps,则视频由200帧图像序列构成.每帧是一副单通道的灰度图像,通过pythonb里面的np.stack(深度拼接)可将200帧拼接成200通道的深度数据.进而送到网络里面去训练. 如果输入图像200通道觉得多,可以对视频进行抽帧,针对具体场景可以随机抽帧或等间隔抽帧.比如这里等间隔抽取40帧.则最后输入视频相当于输入一个40通道的图像数据了. pytorch对超过三通道数据的加载: 读取视频每一帧,转为array格式,然后依次将

  • pytorch 实现将自己的图片数据处理成可以训练的图片类型

    为了使用自己的图像数据,需要仿照pytorch数据输入创建新的类,其中数据格式为numpy.ndarray. 将自己的图片保存到numpy.ndarray中,然后创建类 from torch.utils.data import Dataset import numpy as np class Dataset(Dataset): def __init__(self, path_img, path_target, transforms=None): self.train = path_img sel

  • pytorch载入预训练模型后,实现训练指定层

    1.有了已经训练好的模型参数,对这个模型的某些层做了改变,如何利用这些训练好的模型参数继续训练: pretrained_params = torch.load('Pretrained_Model') model = The_New_Model(xxx) model.load_state_dict(pretrained_params.state_dict(), strict=False) strict=False 使得预训练模型参数中和新模型对应上的参数会被载入,对应不上或没有的参数被抛弃. 2.

  • Pytorch 定义MyDatasets实现多通道分别输入不同数据方式

    最近在做一个项目,用双通道神经网络,每个通道输入不同数据训练,具有相同label.开始没想到如何实现,网上很多例子都是单通道,即便找到双通道的例子,两个通道的输入也相同. 最后,终于想到了一个办法.多输入和单输入其实是一样的,只需要重新改写torch.utils.data.Datasets. 需要改写class Dataset里面的init.len和getitem 一个例子: class MyDataset(data.Dataset): def __init__(self, data1,data

  • java 使用Scanner类接收从控制台输入的数据方式

    接收从控制台输入的数据可以使用Scanner类实现,Scanner类在一个名为util的包中 需要在程序中导入这个包, 即在程序中添加 import java.util.*; Scanner类可以接收int string char boolean 等类型数据,其中string类型数据使用next() 或者 nextLine() 方法接收 使用方法如下: //首先创建一个Scanner的对象 Scanner scanner = new Scanner(System.in); //定义一个变量,调用

  • PyTorch深度学习LSTM从input输入到Linear输出

    目录 LSTM介绍 LSTM参数 Inputs Outputs batch_first 案例 LSTM介绍 关于LSTM的具体原理,可以参考: https://www.jb51.net/article/178582.htm https://www.jb51.net/article/178423.htm 系列文章: PyTorch搭建双向LSTM实现时间序列负荷预测 PyTorch搭建LSTM实现多变量多步长时序负荷预测 PyTorch搭建LSTM实现多变量时序负荷预测 PyTorch搭建LSTM

  • pytorch实现用CNN和LSTM对文本进行分类方式

    model.py: #!/usr/bin/python # -*- coding: utf-8 -*- import torch from torch import nn import numpy as np from torch.autograd import Variable import torch.nn.functional as F class TextRNN(nn.Module): """文本分类,RNN模型""" def __ini

  • 使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式

    简介 这是深度学习课程的第一个实验,主要目的就是熟悉 Pytorch 框架.MLP 是多层感知器,我这次实现的是四层感知器,代码和思路参考了网上的很多文章.个人认为,感知器的代码大同小异,尤其是用 Pytorch 实现,除了层数和参数外,代码都很相似. Pytorch 写神经网络的主要步骤主要有以下几步: 1 构建网络结构 2 加载数据集 3 训练神经网络(包括优化器的选择和 Loss 的计算) 4 测试神经网络 下面将从这四个方面介绍 Pytorch 搭建 MLP 的过程. 项目代码地址:la

  • pytorch nn.Conv2d()中的padding以及输出大小方式

    我就废话不多说了,直接上代码吧! conv1=nn.Conv2d(1,2,kernel_size=3,padding=1) conv2=nn.Conv2d(1,2,kernel_size=3) inputs=torch.Tensor([[[[1,2,3], [4,5,6], [7,8,9]]]]) print("input size: ",inputs.shape) outputs1=conv1(inputs) print("output1 size: ",outp

  • pytorch实现seq2seq时对loss进行mask的方式

    如何对loss进行mask pytorch官方教程中有一个Chatbot教程,就是利用seq2seq和注意力机制实现的,感觉和机器翻译没什么不同啊,如果对话中一句话有下一句,那么就把这一对句子加入模型进行训练.其中在训练阶段,损失函数通常需要进行mask操作,因为一个batch中句子的长度通常是不一样的,一个batch中不足长度的位置需要进行填充(pad)补0,最后生成句子计算loss时需要忽略那些原本是pad的位置的值,即只保留mask中值为1位置的值,忽略值为0位置的值,具体演示如下: im

  • pytorch dataloader 取batch_size时候出现bug的解决方式

    1. RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0. Got 342 and 281 in dimension 3 at /pytorch/aten/src/TH/generic/THTensorMoreMath.cpp:1333 2. RuntimeError: invalid argument 0: Sizes of tensors must match except i

  • Pytorch技法之继承Subset类完成自定义数据拆分

    我们在 <torch.utils.data.DataLoader与迭代器转换操作> 中介绍了如何使用Pytorch内置的数据集进行论文实验,如 torchvision.datasets .下面是加载内置训练数据集的常见操作: from torchvision.datasets import FashionMNIST from torchvision.transforms import Compose, ToTensor, Normalize RAW_DATA_PATH = './rawdata

  • python实现输入的数据在地图上生成热力图效果

    我就废话不多说了,直接贴代码,注意要先安装folium #-*-coding:utf8-*- #输入data生成热力图html,借助了leaflet,没网不能用 import os import folium data=[[ 39.90403 , 116.407526 , 23014.59 ] , [ 39.084158 , 117.200983 , 16538.19 ] , [ 38.042309 , 114.514862 , 5440.6 ] , [ 37.87059 , 112.54887

随机推荐