0

Numpy奇技淫巧——理解axis

Numpy是整个Python的科学计算的基础,撑起了Python作为机器学习重要语言的整个计算基础,包括Numpy, Scipy, Pandas, Scikit-Learn以及最近兴起的机器学习和深度学习库,包括TensorFlow, Keras等,它们多维数据的表示和使用无不基于Numpy,因此在语法和使用上以及功能上都和Numpy有着很多相似之处,这篇文章介绍Numpy中的非常重要的概念,那就是axis,如果你完全理解了axis,那么操作起多维的数组的时候将得心应手。 Continue Reading

0

Python奇技淫巧——Unpacking Argument Lists

在Python2.7的文档中,有介绍Unpacking Argument Lists的文档,unpacking arguments lists的字面意思看起来比较陌生,但是如果你看下面的代码就知道它是什么意思了

**d就是unpacking argument的一种方法,将字典d解包之后将对应的参数传给有名元组Point,需要注意的是,被解包的字典的key的名字一定要和namedtuple的field_names相对应,否则会报错。 Continue Reading

0

Numpy奇技淫巧——抽样

在处理数据的时候,我需要从10000条记录中一次抽样1000条记录,可以用random.sample实现,思路是生成相应的随机索引,然后再去按照索引去抽取数据,代码如下

代码中,index表示从10000条记录中获取随机获取的1000条记录的索引,然后按照索引去获取数据,思路就是那么简单,而且也不会出错。

或者,index的生成也可以采用下面这种方法

0

转换RGBA通道为RGB通道

通常来说,一张图片有RGB三通道,但是有些图片有第四通道,那就是alpha通道,这个通道表示透明度的概念,下面介绍怎么利用PIL来吧RGBA通道转成RGB通道。

首先使用img.mode判断是否是RGBA通道

然后定义convert_to_rgb函数

Continue Reading

0

TensorFlow修炼手册(2)——模型的保存和恢复

TensorFlow中,利用TensorFlow训练好了模型之后,我们需要保存模型参数,然后加入到产品当中,这样,当有新的数据来了之后,算法不用重新训练,而是利用训练好的模型的参数,这样,即使是浏览器也可以写JavaScript跑深度学习的应用了。总的来说,我们需要创建tf.train.Saver对象的实例来调用saverestore两个方法分别来保存和恢复模型。通过学习总结如下

模型的保存

调用tf.train.Saver() 创建一个Saver 来管理模型参数,代码如下

Continue Reading

0

关于僵尸进程和孤儿进程

最近在学习利用nicerenice命令调整进程优先级的时候看到了这篇博客,整理对僵尸进程孤儿进程的理解。

僵尸进程:一个子进程在其父进程没有调用wait()waitpid()的情况下退出。这个子进程就是僵尸进程。如果其父进程还存在而一直不调用wait(),则该僵尸进程将无法回收,等到其父进程退出后该进程将被init回收。
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。
僵尸进程将会导致资源浪费,而孤儿则不会。

0

PIL crop函数的用法

最近在用TensorFlowCNN的程序,需要对几万张图片进行剪切和处理,利用PIL这个Python处理图片的库可以很方便对图片进行处理。当我们使用PIL读取了图片之后,可以利用crop()函数对图片进行剪切。

详细文档如下所示:

在介绍怎么截图之前,有必要说明以下,对于图像的坐标,它的原点是最左上角那个点,X轴往右,Y轴往下。如果我想删除图片的前30行和后30行,左右保持不变,代码如下

再来个看得见的例子吧,原始图片是下面这张图

图片的size是1280 x 863,图片来自网络

Continue Reading

0

Words as Vectors

这篇博客是iksnic的博客Words as Vectors的翻译,部分翻译有做改动,如有翻译不当的地方,请在评论区提出。下面是译文。

向量空间模型是信息检索中非常有名的模型,该模型中每个文档被当做是一个向量。向量中的元素表示对应的单词在文档中的权重或重要程度,利用余弦相似度可以计算两个文档之间的相似度。

虽然使用向量来表示单词的方法已经出现了一段时间,但是把单词映射到向量的词嵌套技术已经兴起。其中Tomáš Mikolov的 Word2vec算法影响很大,该算法使用大量文本来产生低(原文是high,但是我举得词嵌套的矩阵的维度相对词典的维度来说是低维度)维度(50-300)来表示单词以及在获得没有借助外部标注下获得单词与单词之间的关系。这种表示方法也获取了语言的规律,比如它通过向量操作vec(‘Paris’) – vec(‘France’) + vec(‘Italy’)产生一个向量来近似表示vec(‘Rome’)

如下图所示,word2vec算法使用单隐藏层的全连接神经网络,如下图所示。隐藏层的神经元是线性神经元,而输入层的神经元的数量和训练数据的单词的数量一致。隐藏层的大小与最后词向量的维度一致,输出层的维度和输入层维度一致。因此,假设需要学习的词向量包含$V$个单词以及每个词向量有$N$维,从输入层到隐藏层之间的权重可以用$V \times N$的权重矩阵$WI$表示,其中每一行表示一个单词,同样从隐藏层到输出层的权重矩阵是一个$N \times V$的矩阵$WO$,其中每一列表示词典中的一个单词。网络的输入使用one-hot encoding表示,也即在输入向量中只有对应的单词是$1$其他的都是$0$。

word2vec的网络结构

Continue Reading