美文网首页
pytorch之类中的__getitem__ __len__le

pytorch之类中的__getitem__ __len__le

作者: Allard_c205 | 来源:发表于2021-08-20 13:50 被阅读0次

    在Python中如果想构建类似序列和映射的类(就是可以迭代,以及通过[下标]返回元素的用法),可以通过重写魔法函数的方式来实现,常用的魔法函数及其功能如下:

    1) __getitem__(self,key):返回键对应的值 value   #类实例化之后,通过使用下标的方法对类实例化对象进行取值

    2)  __len__():  返回元素的长度        #在类实例化之后,通过len()函数的调用就可以使类下的该函数发挥作用

    3)  __delitem__(self,key):删除给定键key对应的值 value  # 待补充

    4)  ___setitem__(self,key,value):设置给定键key的值 value  #待补充

    其中,只要实现了前两个函数,就可以被认为是序列。

    由于第1)个函数可以对对象进行类似list的操作,如切片、索引、迭代等,{可迭代对象指的是:可以用 for循环的对象,如:字符串、列表、元组、字典、集合等等 }   如果在类中定义了该方法,则类的实例对象(假设为P)就可以以P[key]方式取值,并且会调用类中的该方法。当对类的属性进行下标操作时,首先会被1/3/4 操作拦截,从而执行我们在其方法中设定的操作:如赋值、修改内容、删除内容等。

    在处理自定义数据集时要继承Dataset类,然后重写__len__() / __getitem__() 函数。

    其中两个函数的作用: 可以通过len(dataset)返回数据集的大小;利用dataset[i]能够返回第i个数据样本,同时在__getitem__()函数中完成图片的读取工作可以减少内存开销,只要在需要用到的时候才将图片读入。

    参考:https://blog.csdn.net/weixin_39504171/article/details/106680548

    相关文章

      网友评论

          本文标题:pytorch之类中的__getitem__ __len__le

          本文链接:https://www.haomeiwen.com/subject/vucabltx.html