pytorch之类中的__getitem__ __len__len__等魔法函数的应用

在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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容