Technic

PEP 8 — Style Guide for Python Code (PEP8 — Python代码风格指南)

前言 本篇文章是对Python官网上的代码风格指南的翻译和注解。虽然网上已经有很多类似的翻译了,我还是希望通过自己进行翻译的方式加深对指南的理解。本文更多注重于内容的翻译,所以没有特别多的辞藻修饰,文中若有疏漏和不妥之处,欢迎大家批评指正。本文没有完全翻译结束,近期会慢慢完善。 PEP: 8 Title: Style Guide for Python Code Author: Guido van Rossum <guido at python.org>, Barry Warsaw <barry at python.org>, Nick Coghlan <ncoghlan at gmail.com> Status: Active Type: Process Created: 05-Jul-2001 Post-History: 05-Jul-2001, 01-Aug-2013   Introduction 介绍 This document gives coding conventions for the Python code comprising the standard library in the main Python […]

Continue Reading

Technic

Windows电脑连接linux服务器跑python程序不显示图形的解决(使用Xming和putty)

我在使用windows系统的电脑通过pycharm在实验室的linux服务器上运行python程序的时候,无法正常显示图形,程序卡在plt.show()语句处;而在windows电脑本地运行程序没有问题。通过询问M同事得知使用windows系统连接linux服务器作图的话,需要使用Xming程序,并保证其一直在后台运行。这篇文章就介绍一下怎么设置Xming和putty从而实现可以正常显示图像。   Step 1: 下载Xming和putty 可以从这里下载Xming并按着提示进行安装。putty大家应该都有了,没有的话在这里下载并安装。网上有人建议Xming的安装地址中不要有空格和中文,可以参考一下尽量避免。   Step 2: 设置putty 运行putty之后首先在界面里输入服务器的ip,可以使用save功能对这个session进行保存,这样下次就可以用load直接调用了(例如我存为了titan)。然后非常重要的是要转到Connection->SSH->X11标签下进行设置,勾选Enable X11 forwarding并输入X display的location,例如 localhost:10.0 (注意:这里之后可能需要更改)     Step 3: 通过putty登陆服务器并进行测试 接下来通过putty登陆服务器,这里需要输入你在服务器的用户名和密码。成功登陆后运行xclock语句,由于我们还没有设置Xming服务器,这里会出现错误提示,例如 PuTTY X11 proxy: unable to connect to forwarded X server: Network error: Coion refused Error: Can’t open display: localhost:11.0  注意最后的localhost为11.0,因此我们退出putty并把上一步X11标签下的X display location改为localhost:11.0   Step 4: 运行XLaunch 注意是运行XLaunch不是Xming,因为我们需要进行一些设置。运行XLaunch之后在Display number里输入上一步最后提示的localhost的数字,比如这里为11,之后一路下一步就好。   Step 5: 再次使用xclock进行检查 重复Step 3使用xclock命令进行检查,设置正确的情况下会显示如下图的时钟。   Step 6: 在pycharm中对项目进行设置 在项目对应的环境变量中增加下图中红框里所示的变量,即Name为DISPLAY,Value为localhost:11.0。如此设置好之后,运行python文件即可正确显示图形结果了。   备注 使用过程中需要保证putty和Xming一直是运行状态 […]

Continue Reading

Technic

使用Numpy时遇到的那些坑

Numpy.delete只删除元素的数值 Numpy.delete只是把元素的数值删掉,并不会数组中的这个元素。也就是说,使用Numpy.delete的话,数组的长度是不变的。 如果想完全删除这个元素以及它所在位置,可以使用如下如下语句: X_train = X_train[1:len(X_train),:] ,其中X_train为你想对其进行操作的变量,本例中删除了原X_train 的第一个元素(即index为0的那个元素)。这里如果使用Numpy.delete误以为整个元素被删除了而且没有对其赋予新的值,原来元素所在的位置可能会由一个随机生成的数字代替,在后续的操作中会遇到一些莫名奇妙的数据问题。

Continue Reading

Technic

Linux下使用tmux进行分屏操作

之前看到S同事用同一个命令窗口对实验室server的GPU和进程进行监控,觉得很有意思,而且可以很高效的利用窗口。问了一下是用的tmux,于是今天实践了一下,非常有意思。同时在这里也感谢一下S同事跟我分享这些知识和相关的链接。   tmux的安装这里就不赘述了,下面我们直接来看下tmux的三个模块,即会话、窗口和面板: session 会话:一个服务器可以包含多个会话 window 窗口:一个会话可以包含多个窗口 pane 面板:一个窗口可以包含多个面板   使用tmux我们可以在同一个命令窗口中进行分栏(即不同的面板),比如上下分,左右分,并且可以分成好多不同的小区域进行不同的功能。例如这里我希望把一个命令窗分成上下两部分,上半部分监控GPU,下半部分监控系统的进程。   首先我们需要新建一个tmux session,可以使用命令tmux new-session -s work,最后的work为这个session的名字,建好之后只要不删除这个seesion,那么下次重新打开命令窗的时候,再次输入这个命令还会显示和上次一样的窗口设置,接下来我们就可以在这个session里使用tmux的功能了。   使用tmux的方式是先按快捷键组合,然后按功能键。比如默认的快捷键组合为ctrl+b,那么在同时按下ctrl和b之后,我们可以再按一个对应的功能键来实现希望的功能。具体就从分屏这个简单的例子说吧,如果我们想在窗口中进行上下分屏,我们就先同时按下快捷键组合ctrl和b,然后松开这两个按键,接下来我们按下双引号键”。这样屏幕就像下图一样被分成了上下两个部分。   现在屏幕被分成了两个部分,我们在这两个部分中分别写代码。需要提示的是,如果我们想从一个pane切换到另一个pane,可以使用ctrl+b然后按下方向键。现在大家看到上图中间的横线右半边是绿色,说明下半个pane是处于激活状态。同理,如果是上半个pane为激活状态,则左半边横线为绿色。   接下来我们使用Linux上的一点小技巧中介绍的方法,对GPU和进程进行监控。我们在上边的pane输入watch -n1 –color gpustat,在下边的pane输入htop,这样我们就得到了下图的结果:   目前我们虽然实现了对GPU和进程同时监控,不过窗口布局不是很好看,我希望把上半个pane缩小一点,下半个pane增大一点,这样可以更好的利用整个窗口。网上说的是可以使用ctrl+b后按着ctrl不放,并按方向键,不过我这里实验了发现不成功,依然成了切换pane。我用的是先按ctrl+b,然后使用alt+上/下键进行pane大小的调整。   理论上讲使用ctrl/alt加方向键是两种不同的调整方法: Ctrl+方向键 :以1个单元格为单位移动边缘以调整当前面板大小 Alt+方向键 :以5个单元格为单位移动边缘以调整当前面板大小 可是我这里只有第二种方法,即用alt+方向键的方法可以使用。   除了分屏的功能外,还可以使用tmux命令将两个命令窗的内容同步,也就是关联两个命令窗。更多关于tmux使用和功能的介绍可以参考以下两篇文章: Linux终端分屏工具tmux快捷键备忘 tmux cheat sheet   最后再附上一个所有功能键的示意图: 图片来源(LINK)

Continue Reading

Technic

使用python构建ARIMA模型进行预测分析的小说明:forecast函数

Autoregressive Integrated Moving Average model(ARIMA),即差分整合移动平均自回归模型,或称为整合移动平均自回归模型,是一种时间序列预测分析方法。今天我在实践过程中遇到一个小问题,后来看了官方文档才弄清楚,这里和大家分享一下。 首先分享三篇我觉得比较好并且容易上手的教程,其中包含源代码可以直接使用。第一篇是一个最简单的入门,是单步预测;第二篇可以进行多步预测;第三篇对于算法使用前的数据处理和分析进行了详细的介绍;第四篇也有相详尽的步骤和代码,并对数据进行了详细的分析,第五篇详细的介绍了从线性回归到AR、ARMA、ARIMA及GARCH等方法。 How to Create an ARIMA Model for Time Series Forecasting with Python How to Make Out-of-Sample Forecasts with ARIMA in Python Forecast a time series with ARIMA in Python A Guide to Time Series Forecasting with ARIMA in Python 3 Time Series Analysis (TSA) in Python – Linear Models […]

Continue Reading

Technic

Pycharm快捷键及小技巧

现在编程主要使用pycharm,所以这里记录一下使用到的pycharm的小技巧和常用的快捷键。   小技巧 垂直选择文本模式 当前文件右键–>Column Selection Mode–>垂直选择文本 快捷键:Alt + Shift + Insert   在“插入模式”和“改写模式”中转换 键盘上的INSERT键   调出某个窗口(如运行窗口 run,控制窗口 Console等) 鼠标移到窗口最左下的像小窗户一样的图标处,会自动弹出窗口菜单,可以在其中进行选择   仅运行选中的代码 方法1: 右键->Execute line in Console  方法2:Alt + shift +e (前提是命令窗已经设置好,没有的话见下一条)   设置命令窗口Console 通过File -> Settings -> Build ->Console -> Python Console 选择合适的Python interpreter     快捷键 alt+左键:列模式选择   ctrl+b 查看函数定义(或用ctrl+鼠标左键) ctrl+d 复制当前一行并添加在下方 ctrl+q 显示当前参数类型 ctrl+y 删除整行    ctrl – /ctrl + 折叠当前代码(可以用键盘处+和-) […]

Continue Reading

Technic

设置使用tensorflow作为backend并在GPU上运行

由于Theano从十月起停止更新(LINK),我开始着手把我使用Keras时的backend从Theano转到Tensorflow。以下是今天在同事LY的指导下进行backend转换的一点总结(同时对她表示感谢)。   安装环境:Linux服务器上的虚拟环境中(详见:在linux系统上设置虚拟环境Virtual Environment)   首先我根据Keras官网的介绍对keras.json文件进行设置(LINK)。在命令框中输入: vi .keras/keras.json   然后按着如下代码编辑,主要是把backend改为tensorflow。(其实Keras默认的backend就是tensorflow,只是因为我之前改成了theano,所以现在要改回来。) { “image_data_format”: “channels_last”, “epsilon”: 1e-07, “floatx”: “float32”, “backend”: “tensorflow” }   另外如果你还没有安装GPU版本的tensorflow,则需要首先进行安装。由于我们实验室的server上不兼容1.3版本的tensorflow,我这里对安装的版本进行了控制 pip install tensorflow-gpu==1.2   成功安装之后,就可以在你的.py文件的代码里加入如下语句进行tensorflow的backend的调用和设置了,设置好之后像平常一样运行文件即可。 import tensorflow as tf import keras.backend.tensorflow_backend as KTF os.environ[“CUDA_VISIBLE_DEVICES”] = “3” #设置需要使用的GPU的编号 config = tf.ConfigProto() config.gpu_options.per_process_gpu_memory_fraction = 0.4 #设置使用GPU容量占GPU总容量的比例 sess = tf.Session(config=config) KTF.set_session(sess)   为了观察程序是否确实在使用GPU,可以使用在《Linux上的一点小技巧》中提到的命令gpustat或者watch -n1 –color gpustat进行查看程序是否真的运行在GPU上。 […]

Continue Reading

Technic

机器学习利用第三方库自动寻找最优参数

        目前的实验中我在用深度学习构建神经网络,开始的时候我一般是随机手调几个数大致看下效果,有时候如果需要知道网络效果随参数变化的趋势,就用for循环自动运行许多实验,然后我来收结果并用matlab批量分析。今天同事给我推荐了两个github上的库,利用这两个库可以实现对模型多次的运行并评价系统的运行结果。这个过程中不涉及对系统的优化,只是通过大量的自动运行的实验通过统计学的角度来比较什么样的参数相对较好。         这两个库分别为Spearmint 和 BayesianOptimization.详细的介绍、安装方法和例子在各自的网站里都有写,我就不赘述了。目前我正在尝试使用Spearmint方法,所以先把安装过程中的一点小提示写在这里。         首先,这个库是在python 2.7环境的,如果你使用python 3 的话会遇到一些问题,所以建议使用2.7.         其次,新版的scipy中weave模块已经独立出来,所以原来的文件中使用的scipy.weave as weave语句就没法使用了,会报错。有人建议如下修改   try: import scipy.weave as weave except ImportError: import weave                 可是我的电脑上即使更新scipy后也无法导入scipy.weave或者weave,所以只好使用下边这种方法,也就是完全不使用weave库。因为weave只使用了一次,所以只要在/spearmint/kernels/kernel_utils.py文件中把使用weave模块的部分注释掉即可,把第226行附近的代码调整为如下所示。原来使用weave模块用c语言计算的部分被用python语言的替代了,计算速度会下降,不过好歹可以用了。此外记得删除kernel_utils.py和/spearmint/models/gp_classifier.py文件中weave模块的import。   #try: # scipy.weave.inline(code, [‘x1′,’x2′,’gX’,’ls’,’M’,’N’,’D’], \ # type_converters=scipy.weave.converters.blitz, \ # compiler=’gcc’) […]

Continue Reading

Technic

机器学习相关在线文档网址

Python and packages Python Documentation: You can also select the documentation for different python versions PEP 8 Style Guide PEP8中文版 — Python编码风格指南(上) PEP8中文版 — Python编码风格指南(中) PEP8中文版 — Python编码风格指南(下) 用Python做科学计算 Scipy official web: Include numpy, Matplotlib and so on statsmodels: For install statsmodels package.  pyflux: A library for time series analysis and prediction   High-level APIs Keras Documentation Keras中文文档   […]

Continue Reading