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

0

TensorFlow修炼手册(1)——基础入门

TensorFlow是一个使用图计算的一个通用的数值计算的框架,图中的节点表示数学操作,而图的边表示操作之间的多维数据(张量,tensor)。TensorFlow的架构很灵活而且富有可拓展性,它可以部署在多核CPU或者是GPU上,不管是台式机,服务器,亦或是移动设备,只要利用它的简单的API,就能很好的在这些平台上运算。TensorFlow最初是由Google’s Machine Intelligence research organization的Google Brain团队为了实现机器学习和深度研究而开发的,但是TensorFlow在其他的领域也能够产生广泛的运用,目前已经开源

tensorflow

TensorFlow

Continue Reading

0

卷积神经网络(1)——基本概念

这是我的第一篇介绍卷积网络的博客,卷积神经网络(Convolutional Neural Networks)不单单比人工神经网络有更多的层数,而且它的每一层有不同的设计,相比人工神经网络每一层是对每个像素点进行描述,CNN的每一层对图片的作用是不同的,有些层“看”图片的轮廓,有些层“看”图片的颜色,有些层“看”图片的形状等等。CNN在图像处理方面具有非常强大的分类和识别能力。下面介绍CNN的基本的概念,主要内容如下

  • 卷积层
    • Local receptive fields
      • Patch/Kernel/Filter
      • Width
      • Depth
      • Padding
      • Stride
      • Shared weights(共享权重)
    • Feature map
    • ReLU
  • 池化层
    • Pooling(池化/下采样)
  • 全连接层(Full Connected Layer)

继续写这篇文章,我忽然发现我有点心虚,因为毕竟自己所学尚浅,天资愚笨,而且笨嘴拙舌,怕不能把所学的内容将清除,误人子弟,因此如果读者发现有错,请及时在评论区提出。

基本的卷积神经网络一般有卷积层,ReLU层,池化层以及全连接层这几个部分,在很多时候,ReLU层都是和卷积层合并统称为卷积层。如下图所示

convnet

图片来自:http://cs231n.github.io/assets/cnn/convnet.jpeg

Continue Reading