python
silent56_th
大学生一枚,对机器学习、图像处理感兴趣,偶尔也会刷刷leetcode或者hihocoder。希望在这里可以和大家多多交流,互相学习。
展开
-
numpy陷阱之fancy indexing生成copy
numpy在用python传统的slicing做index,和其自定义的numpy.array/list做index时的表现不同,非常坑人。。。翻译自此文档:https://scipy-cookbook.readthedocs.io/items/ViewsVsCopies.html什么是fancy index:详见numpy文档 。简单的说,除了传统的slicing(即start:end:s...翻译 2019-03-15 18:29:59 · 327 阅读 · 0 评论 -
python查看进程使用内存信息 psutil
翻译自: https://stackoverflow.com/questions/938733/total-memory-used-by-python-process psutil官网介绍:https://github.com/giampaolo/psutil样例代码如下:import os,psutilprocess = psutil.Process(os.getpid())...转载 2018-07-31 20:41:38 · 11934 阅读 · 0 评论 -
python获取GPU相关信息
笔者想要根据空闲显存信息,动态分配tensorflow中session运行的GPU。搜索下来没有发现成熟的方案,备选方案记录如下: 方案一: 翻译自:How to get current available GPUs in tensorflow? 使用tensorflow的后端函数device_lib.list_local_devices()。 缺点1:会尝试并占用所有可用GPU显存,需要...原创 2018-07-31 20:28:17 · 7814 阅读 · 0 评论 -
Tensorflow全局设置可见GPU编号
笔者需要tensorflow仅运行在一个GPU上(机器本身有多GPU),而且需要依据系统参数动态调节,故无法简单使用CUDA_VISIBLE_DEVICES。 一种方式是全局使用tf.device函数生成的域,但设备号需要在绘制Graph前指定,仍然不够灵活。 查阅文档发现config的GPUOptions中的visible_device_list可以定义GPU编号从visible到virt...原创 2018-07-31 19:58:48 · 4389 阅读 · 3 评论 -
tensorflow+multiprocessing实现并行调参
笔者需要得到100组不同的超参数 训练后的测试准确率,其中不同的超参数对应于不同的网络结构,故Graph和Session均不能共享。即笔者需要执行100次 构建Graph-新建Session-Train&Test-Close&Quit 的操作。 而程序本身占用资源不多,于是便想要实现并行,加速调参。需求:输入100组超参数,返回相应超参数对应的测试准确率每组超参数...原创 2018-08-04 23:19:13 · 8836 阅读 · 14 评论 -
python动态import包
笔者需要根据命令行参数引入不同的包,原先一直使用exec函数,例如exec("import %s as model"%sys.argv[1])但是如 Why doesn’t exec work in a function with a subfunction? 所述,exec不易于子方程内使用。参照 Dynamic module import in Python,使用__import_...原创 2018-08-04 21:47:59 · 578 阅读 · 0 评论 -
matplotlib使用savefig遇到错误 integer argument expected got float
翻译自:https://stackoverflow.com/questions/46898063/matplotlib-save-file-as-jpeg-encoder-error解决方案:pip3 install --upgrade pillow错误代码: File "/usr/local/lib/python3.5/dist-packages/matplotlib/fig...翻译 2018-07-05 20:50:58 · 3373 阅读 · 1 评论 -
python的三元条件语句
详情请参考:Does Python have a ternary conditional operator?笔者想要实现类似C++中cond?true_fn:false_fn的语句,python中的类似语法是true_fn if cond else false_fn翻译 2018-04-05 17:13:35 · 317 阅读 · 0 评论 -
python scipy 计算黎曼ζ函数
使用scipy.special.zeta函数,详情请参考:https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.special.zeta.html 代码样例:from scipy.special import *print(zeta(2.1,1))...翻译 2018-04-12 14:27:01 · 2835 阅读 · 0 评论 -
python的类型检查:type和isinstance
详解相关内容的文章有很多,这里简单描述以防忘记。 官方文档推荐使用isinstance函数,因为type函数 不能处理subclass等。转载 2018-04-04 23:08:44 · 705 阅读 · 1 评论 -
jupyter notebook 设置密码
jupyter-notebook password因为需要远程使用jupyter notebook,而且不是可直达的服务器,所以也难以直接套用其内部方案。笔者使用ssh传递信息,但是没有浏览器情况下jupyter notebook貌似不会自动生成token。不想再研究,就直接设置固定密码了。方法如上原创 2017-10-20 21:07:28 · 20580 阅读 · 2 评论 -
python pip覆盖全局包配置重安装
笔者在共享服务器上无root权限,而管理员安装的python包之间版本不匹配(经典的numpy binary incompatibility runtime warning),所以需要本地重安装覆盖原版本。常用的”compile from source+change PYTHONPATH”的方法太麻烦了,阅读文档发现个用pip的简单方法:pip install --user -I <pa...原创 2018-08-03 16:01:43 · 6346 阅读 · 0 评论 -
numpy.ravel无法使shape变成1D
我的错误修正很简单,将matrix变成array就可以了。不过了解了numpy中存在matrix这个ndarray的subclass,强制2D shape。根据What are the differences between numpy arrays and matrices? Which one should I use?中的说法,matrix效率低,还不灵活,只有方便写纯matrix计算代码...翻译 2019-01-08 15:17:21 · 356 阅读 · 0 评论 -
python编程环境配置http代理
需求:公司网络要走代理服务器,所以需要win10系统中配置git, pip, 以及ubuntu子系统走http代理。各个工具都有局部的或者全局的配置文件,配置起来很方便,记录于此以防以往。其中win10配置的是用户级的,ubuntu子系统直接做了全局配置。git: git设置HTTP代理git config --global http.proxy http://proxyUsername...转载 2019-01-18 13:24:48 · 1975 阅读 · 0 评论 -
无root权限安装pip
翻译自:https://askubuntu.com/questions/363300/how-to-install-pip-python-to-user-without-root-access某服务器上无root权限,而系统无内置python-pip。搜索发现可以使用easy_install安装,命令如下:easy_install --user pip可能需要添加PATH(笔者没有用到)...翻译 2019-01-01 14:55:58 · 1056 阅读 · 0 评论 -
/usr/bin/ld不调用LD_LIBRARY_PATH内动态库
要编译个python包,内含c++拓展,需要一个动态库。因为没有服务器的root权限,自行下载动态库编译,得到.so文件及路径。按照常规的将路径加入LD_LIBRARY_PATH后,仍然无法找到指定动态库。使用ld -<lib> --verbose测试发现,/usr/bin/ld就不会搜索LD_LIBRARY_PATH指定路径。因为我对python包 以及 服务器整体环境并不...翻译 2018-12-24 23:01:16 · 696 阅读 · 0 评论 -
python复制virtual environment
翻译自: https://stackoverflow.com/questions/7438681/how-to-duplicate-virtualenv假设想要复制环境A到环境B首先进入环境A,生成requirement文件pip freeze > requirements.txt切换至环境B,安装即可pip install -r requirements.txt...翻译 2018-12-17 10:35:27 · 362 阅读 · 0 评论 -
ipython动态调试模块
翻译自:https://ipython.org/ipython-doc/3/config/extensions/autoreload.html使用autoreload魔法命令,可以使得每次调用模块内命令时,重新load相应模块。即可以在不退出ipython环境的情况下,同时修改模块文件,进行测试。使用方法为:%load_ext autoreload%autoreload 2import ...翻译 2018-11-10 15:53:10 · 616 阅读 · 0 评论 -
pip install 遇到错误 OSError: [Errno 28] No space left on device
参考 http://aka863.blogspot.com/2017/06/pip-install.html 因为tmp目录空间不够,使用-b指定build目录,解决问题。转载 2018-09-13 14:34:41 · 6773 阅读 · 0 评论 -
Python遇到unboundlocalerror local variable 'os' referenced before assignment
参照 说下那神奇的 UnboundLocalError: local variable x referenced before assignment, 发现是因为正文代码内部调用了import os,所以虽然全局同样import os,但是在其同域内赋值前会遇到错误unboundlocalerror local variable 'os' referenced before assign...转载 2018-09-07 16:13:35 · 2917 阅读 · 0 评论 -
python用邻接矩阵作图,输出存储在numpy.ndarray中的图像
简单地说,使用networkx作图,然后从matplotilb的canvas里面提取ndarray输出。从邻接矩阵生成networkx中graph类,使用from_numpy_matrix函数,详见:https://networkx.github.io/documentation/networkx-1.7/reference/generated/networkx.convert.from_nu...原创 2018-09-07 15:39:45 · 6058 阅读 · 0 评论 -
python生成加密安全的随机数
详见: https://stackoverflow.com/questions/20936993/how-can-i-create-a-random-number-that-is-cryptographically-secure-in-python 使用系统的随机数生成函数os.urandom,以及import osprint(list(os.urandom(10))) #for python3翻译 2018-01-17 20:11:24 · 4006 阅读 · 0 评论 -
python使用scipy.misc import imread报错:ImportError: cannot import name imread
查看scipy.misc帮助文件得知,imread依赖于pillow,所以安装pillow即可:sudo pip3 install pillow原创 2018-01-08 14:00:13 · 23131 阅读 · 35 评论 -
LaTeX代码环境配置:使用LaTeX展示Python代码
翻译 https://stackoverflow.com/questions/3175105/writing-code-in-latex-document 内的内容。 其实就是使用Listings包,一个例子如下: 在正文前(\begin{document}之前)使用如下代码设置参数:\usepackage{listings}\usepackage{color}\definecolor{dkg翻译 2017-10-22 20:28:54 · 26701 阅读 · 4 评论 -
conda换回默认源
最近由于某些因素清华的conda镜像登不上去了,所以需要换回conda的默认源。查看了conda config的文档后,发现直接删除channels即可。命令如下:conda config --remove-key channels原创 2017-10-22 16:09:31 · 69922 阅读 · 11 评论 -
Python之 is None VS == None
起因是来自于tensorflow即将要改版,对==None也做成elementwise的。具体地,笔者在运行tensorflow得到一下警告:FurtherWarning: comparison to ‘None’ will result in an elementwise object comparison in the future。 所以使得笔者注意到is None和==None还是有区别原创 2017-10-12 22:30:08 · 6682 阅读 · 1 评论 -
tensorflow GPU显存控制
参考资料:https://www.tensorflow.org/tutorials/using_gpu 文中提到了两个控制方法:设置使用显存的百分比,以及设置逐渐增加使用的GPU显存。 关于第一种方法,可以参考Keras指定使用GPU、Keras设定GPU使用内存大小(Tensorflow backend)。 这里翻译第二种方法,代码如下:config = tf.ConfigProto()c翻译 2017-11-06 22:42:24 · 1963 阅读 · 0 评论 -
使用numpy复制拓展数据
具体地,先使用np.stack拓展维度,然后使用np.tile复制数据。 关于np.stack和np.tile的使用请参考numpy.tile和numpy.stack原创 2017-10-20 22:39:35 · 1255 阅读 · 0 评论 -
vim python环境配置
目的配置ubuntu下面vim+python环境,要求有语法缩进、highlight,自动补全等功能。解决方案笔者比较了github上大部分的vimrc方案,都缺少对python的某部分支持。最终从同学那里找到了这个博客,十分符合笔者要求和习惯,安装方便,功能强大,推荐。 http://moelove.info/2016/09/16/%E5%88%A9%E5%99%A8%E7%B3%BB%E5%8转载 2017-09-28 19:49:26 · 767 阅读 · 0 评论 -
jupyter使用matplotlib
环境ubuntu16.04+python3使用方法转载https://stackoverflow.com/questions/19410042/how-to-make-ipython-notebook-matplotlib-plot-inline 中的方法。%matplotlib inlineimport matplotlib.pyplot as plt翻译 2017-09-28 16:32:08 · 5720 阅读 · 0 评论 -
ubuntu查找python包的位置
使用pip命令中的show选项。 E.g. pip show theano---Metadata-Version: 2.0Name: TheanoVersion: 0.8.2Summary: Optimizing compiler for evaluating mathematical expressions on CPUs and GPUs.Home-page: http://deep原创 2017-03-14 23:46:54 · 14117 阅读 · 0 评论 -
python、numpy、scipy、matplotlib的一些小技巧
这里是作者使用python, numpy 以及 scipy时经常忘记的一些有用的小技巧,记录在这里。 斜体字为作者自己的理解,仅供参考,欢迎指教。 参考网址:Python Numpy Tutorial,Numpy and Scipy Documentation,Python 3.5.2 documentation,The Matplotlib API。Python基本运算 1.1. x**y原创 2016-12-19 22:30:05 · 1807 阅读 · 0 评论 -
numpy ndarray初始化
使用list初始化ndarray,应该使用numpy.array 函数。 注意不是使用numpy.ndarray函数,ndarray调用的初始化函数的第一个参数是shape,所以会生成list指定大小的ndarray,而不是以其作为初始值。原创 2017-12-20 20:54:17 · 6425 阅读 · 0 评论 -
python获取当前脚本文件路径
翻译自 https://stackoverflow.com/questions/595305/how-do-i-get-the-path-of-a-the-python-script-i-am-running-in 即main.py与其调用的脚本文件不在同一个路径内,书写脚本文件时无法预测main函数的位置,所以不应该使用os.curdir为基础调控路径,而是当前脚本所在路径。os.path.re翻译 2017-11-26 16:57:53 · 658 阅读 · 0 评论 -
python 重定义__getattribute__函数防止无限递归
关于__getattribute__和__getattr__的区别,请参照:http://www.cnblogs.com/bettermanlu/archive/2011/06/22/2087642.html 使用object作为基类,若想调用self.key则替换为object.__getattribute__(self,key) 具体请参考: https://docs.python.org翻译 2018-01-07 15:30:40 · 2141 阅读 · 0 评论 -
python错误记录:__repr__返回string
重写__repr__函数应该返回string,而不是直接print。 若__repr__并未返回string,会导致许多功能失灵,例如作为字典的值。原创 2018-01-13 20:22:19 · 422 阅读 · 0 评论 -
python dictionary逐元素删除
类内存在字典,而字典的值都是另一个复杂的类。笔者想要显示的删除每个元素以防泄露,当前解决方法如下:keys = list(dic.keys())for key in keys: del dic[key]del keys错误记录: 刚开始时,笔者想要直接循环dic.keys()如下:for key in dic.keys(): del dic[key]报错dictionary c原创 2018-01-13 17:20:38 · 2122 阅读 · 0 评论 -
python 删除一个非空文件夹
参考资料: https://stackoverflow.com/questions/43756284/how-to-remove-a-directory-including-all-its-files-in-pythonimport shutilshutil.rmtree(dir_name)翻译 2018-01-13 17:51:47 · 603 阅读 · 0 评论 -
numpy交换ndarray的两个维度
https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.swapaxes.html np.swapaxes(data,axis1,axis2)原创 2017-12-27 21:24:12 · 16161 阅读 · 0 评论 -
python运行shell command
想要手动实现简易的多线程,又想使用python里面的argument包,所以就在python里面调用python函数。 简单传统的办法就是import osos.system('python3 main.py')还有一个更安全,接口更多的包subprocess,笔者就没有研究了。翻译 2017-12-07 23:19:59 · 3005 阅读 · 0 评论