zoukankan      html  css  js  c++  java
  • torch.utils.data.DataLoader对象中的迭代操作

    关于迭代器等概念参考:https://www.cnblogs.com/zf-blog/p/10613533.html

    关于pytorch中的DataLoader类参考:https://blog.csdn.net/u014380165/article/details/79058479(写的蛮好)

    现在用一个例子来讲解一下:

    (1)法一:

    a = torch.utils.data.DataLoader(....)

    a = enumerate(a) #enumerate的built-in函数:__iter__()会将a变成iterator,后面可以再调用built-in函数:__next__()进行迭代;

    m = a.__next__()  #注意这里使用的是enumerate类型的built-in函数:__next__()

    (2)法二:

    a = torch.utils.data.DataLoader(...)

    a = torch.utils.data.DataLoader.__iter__(a) #这里调用DataLoader的built-in函数:__iter__()将a变成iterator;

    m = a.__next__() #注意:这里调用的是DataLoader的built-in函数:__next__()

    PS:

    (1)上述两种__next__()得到的封装结构是不同的,这个在拆解a时要注意;

    (2)将容器(各种数据结构:list、tuple等)变成iterator时需要使用iter(),而对于类操作时需要在类中定义__init__()和__next__(),注意这点区别;(具体可参考:https://blog.csdn.net/admin_maxin/article/details/82052065 , 这样也说明了为什么不能用a = iter() , m=a.next()这种做法,因为a是一个类了,需要用built-in函数__iter__将其变成iterator,再用__next__(),否则会报“enumarate” object has no attribute "next"的错误 or "DataLoader" object has no attribute "next")

  • 相关阅读:
    无阻塞网络
    带宽、线速、吞吐量
    one-to-all及all-to-all网络通信模式
    CLOS网络架构与FATTREE胖树拓扑
    CLOS网络
    IP分片与重组详解
    原 TCP层的分段和IP层的分片之间的关系 & MTU和MSS之间的关系
    多个方面比较电路交换、报文交换和分组交换的主要优缺点
    地址族与数据序列 (转)
    简单网络搭建与测试 mininet
  • 原文地址:https://www.cnblogs.com/zf-blog/p/10613846.html
Copyright © 2011-2022 走看看