with 关键字 上下文管理器 + Numpy

编程入门 行业动态 更新时间:2024-10-08 10:56:52

with 关键字 <a href=https://www.elefans.com/category/jswz/34/1770489.html style=上下文管理器 + Numpy"/>

with 关键字 上下文管理器 + Numpy

with一个比较经典的用法就是打开或者写入文件的时候。

with open ("xx", "r") as f:lines = f.readlines()

在有with关键字的这一行,首先你会执行一些命令,而且很有可能和as关键字一起创造一个新的变量。在这里就是文件的对象f。在这里就是文件的对象f。

with之所以叫做上下文管理器,就是因为在with关键字的作用域内,创建了一个对象或者变量,这个变量只有在with关键字的作用域内起作用的,也就是说,它创造了一个f是可用的上下文。出了这个上下文,这个变量就会被收回,就不起作用了。有点像函数的那种感觉,但是它不是一个函数,只是作用域的处理上有点像函数。

文件的操作上,一旦你打开了文件的读取,在不用文件的时候,一旦你打开了文件的读取,在不用的时候,大佬记得是需要调用file.close()之类的方法来把文件占用的内存关闭。倘若使用with关键字,在出了with关键字的作用域之后,文件的对象就被自动close和回收掉了,因此十分的方便。

with的另外一个场景是TensorFlow1.xx版本的时候。计算必须放在TensorFlow的Session里面,也会用到with,因为Session在结束的时候同样需要Session.close。

总结:如果你希望一个变量在一段时间后会自动回收掉,那么使用with是一个比较好的选择。你甚至可以定义自己的函数支持with关键字,需要用到Python自带的Contextlib库。

第二个知识点

Numpy是Python的一个矩阵运算库。

在机器学习相关的场景下,Numpy用的很多,尤其是ndarray就是多个维度的矩阵,实际上和Pytorch的Tensor是一个意思,只不过是不同库的不同实现,然后一个tensor.numpy()就是把一个Pytorch的Tensor转换成Numpy的矩阵。因为之后可能是可视化啊或者是什么其他操作,需要numpy的矩阵才行。

Pytorch中有data 

data 的意思是这样的。PyTorch规定:在计算图里面的Tensor是不能直接转换成numpy矩阵的,tensor.data是获取一个数值相同的tensor,同时这个tensor是不在计算图中的,然后它才能用numpy(),但是这个是0.4版本之前的操作,现在有了操作更安全的tensor.datach()操作,用这个会更好,但是本身功能两者是一样的。要修改成tensor.detach().numpy()

以后写detach,别写data,因为detach更安全。注意detach是方法,要tensor.detach().numpy();data是属性,是tensor.data.numpy()。大概是这样。

参考链接:

=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-3.control
 

更多推荐

with 关键字 上下文管理器 + Numpy

本文发布于:2024-02-19 18:47:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1765614.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:上下文   管理器   关键字   Numpy

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!