跑起来一个TensorFlow model-serving服务后,有时候记不清它加载的是哪个.pb模型了,可以采用下面的办法来确认。
TensorFlow
[原创] 用JAVA读取本地的TFRecord文件
[原创] 伯克利人工智能研究所的开源[强化学习框架] rlpyt,让人眼前一亮
BAIR(Berkeley Artificial Intelligence Research,伯克利人工智能研究所),开源了一个强化学习(RL)框架 rlpyt,并于2019.09.24在其主页上对它进行了很长篇幅的介绍(论文在这里)。
市面上开源强化学习框架已经很多了,这个框架是否值得你上车?我认为,未来怎样不好说,但至少现在(2019.10)看来是值得入手的,因为它确实有其他框架不具备/不完善的功能——最主要的就是对并行(parallelism)的良好支持。
在强化学习领域,agent与environment互动来收集training data的过程是最耗时的,如果能并行地用多个agent与多个environment互动来收集数据,那么速度可以极大提升。类似于Google Dopamine这样的RL框架,根本没有把 parallelism 作为设计理念的一部分,所以如果你入了Dopamine的坑,等你对模型训练速度有要求的时候再想着换框架,成本就高多了。
[原创] 如何取出 tf.layers.dense 定义的全连接层的weight和bias参数值
TensorFlow版本:1.14.0
Python版本:3.6.8
在TensorFlow中,tf.layers.dense 定义了一个全连接层,其实现的是(来自官方文档):
This layer implements the operation: outputs = activation(inputs * kernel + bias) Where activation is the activation function passed as the activation argument (if not None), kernel is a weights matrix created by the layer, and bias is a bias vector created by the layer (only if use_bias is True).
意思就是它实现了 y = activation(x * kernel + bias) 的操作,其中,activation是激活函数。在这里,kernel 就是指我们通常所说的 weight,它被TF称为 kernel 而不是 weight。因此,如果你想从这个模型里取出weight参数的话,就要注意它的名字了,否则会读不到这个参数。
下面我们就来看具体的例子。
[原创] 如何打印出TensorFlow保存的checkpoint里的参数名
TensorFlow版本:1.14.0
Python版本:3.6.8
checkpoint文件是TensorFlow保存出来的一种模型文件格式。通常save下来的时候会得到4个文件,例如:
checkpoint
model.ckpt-1.data-00000-of-00001
model.ckpt-1.index
model.ckpt-1.meta
如何查看这些文件里的模型参数名称呢?
[原创] 二维numpy数组保存到TFRecord并读取还原回来
TensorFlow版本:1.14.0
Python版本:3.6.8
TFRecord 文件格式是一种面向记录的简单二进制格式,很多 TensorFlow 应用采用此格式来训练数据。
TFRecord 内部有一系列的 Example ,Example 是 protocolbuf 协议下的消息体。
[原创] tf.tile() 用法举例(TensorFlow)
tile 的含义:
n. 瓦 / 瓷砖 / 软木片 / 亚麻油地毡片v. 用瓦盖 / 贴砖于 / 铺以瓦 / 铺以瓷砖
函数定义:
def tile(input, multiples, name=None):
函数功能:
Constructs a tensor by tiling a given tensor.
即:通过“平铺”一个给定的 tensor 来构造一个新的 tensor。用人话讲就是:把输入的 tensor,在指定的维度上复制N遍(就像铺瓷砖一样),来创建出一个新的 tensor。
3个参数:
input:输入的tensor
multiples:在指定的维度上复制原tensor的次数
name:operation的名字
[原创] 在树莓派上跑起来TensorBoard
本文软硬件环境:
树莓派:3代 Model B V1.2
OS:Arch Linux ARM,32bit
TensorBoard是Tensorflow的可视化工具。当我们用这篇文章里的方法在树莓派上安装好Tensorflow之后,TensorBoard自然就装好了。于是,下面只剩下怎么启动它的问题。
以下是一个例子。
[原创] 加快TensorFlow在树莓派上的执行速度——服务常驻内存
本文软硬件环境:
树莓派:3代 Model B V1.2,内存1GB
OS:Arch Linux ARM
在上一篇文章中,我尝试了加快TensorFlow预测速度的一个方法——模型“预热”,实验证明它非常有效,但那仍然没有解决一个问题:每次运行程序,都要加载一次模型,然后预热N次,这个过程非常耗时,因此减少这部分时间也是非常关键的。把TensorFlow做成一个常驻内存的服务就可以解决这个问题。
解决这个问题的正确姿势是:TensorFlow已经提供了一个叫作 TensorFlow Serving 的library来实现这个需求。但麻烦的是,在树莓派上编译TensorFlow Serving会遇到很多问题,所以,在没有人搞出在树莓派上一键安装的Python wheel包之前,还是算了吧...
因此,下面我用一个很挫的办法来实现一个简陋的TensorFlow service。
[原创] 在树莓派上用TensorFlow玩深度学习(Deep Learning)
本文软硬件环境:
树莓派:3代 Model B V1.2,内存1GB
OS:Arch Linux ARM
深度学习(Deep Learning)现在这么火,树莓派玩家们当然也不会放过,目前已经有很多树莓派项目都搭上了Deep Learning的车,纯粹出于“好玩”的目的,我在树莓派上也实验了一把,用TensorFlow来识别一张图片里的物体“是什么”。