android冻结命令,在Android上使用冻结tensorflow图中的变量

TLDR:如何在Android上使用冻结tensorflow图中的变量?

1。我想做什么

我有一个Tensorflow模型,它在多个变量中保持一个内部状态,用:state_var = tf.Variable(tf.zeros(shape, dtype=tf.float32), name='state', trainable=False)创建。在

此状态在推断过程中被修改:tf.assign(state_var, new_value)

我现在想在Android上部署这个模型。我能够让Tensorflow示例应用程序运行。在那里,加载了一个冻结的模型,工作正常。在

2。从冻结图恢复变量不起作用

但是,当您使用freeze_graph script冻结图形时,所有变量都将转换为常量。这对于网络的权重是好的,但对于内部状态则不是这样。推理失败,并显示以下消息。我把它解释为“赋值不适用于常量张量”

^{pr2}$

幸运的是,您可以将转换为常量的变量列入黑名单。但是,这也不起作用,因为冻结的图形现在包含未初始化的变量。在java.lang.IllegalStateException: Attempting to use uninitialized value layer_7/state

3。恢复SavedModel在Android上不起作用

我尝试过的最后一个版本是使用SavedModel格式,它应该同时包含冻结的图形和变量。不幸的是,调用restore方法在Android上不起作用。在SavedModelBundle bundle = SavedModelBundle.load(modelFilename, modelTag);

// produces error:

E/AndroidRuntime: FATAL EXCEPTION: main

Process: org.tensorflow.demo, PID: 27451

java.lang.UnsupportedOperationException: Loading a SavedModel is not supported in Android. File a bug at https://github.com/tensorflow/tensorflow/issues if this feature is important to you at org.tensorflow.SavedModelBundle.load(Native Method)

4。我该怎么做?

我不知道还能做什么。以下是我的想象,但我不知道如何让它工作:找出一种在Android上初始化变量的方法

找出一种不同的方法来冻结模型,这样初始化器op可能也是冻结图的一部分,可以从Android运行

如果在Android上也需要使用lsti/rns来实现这些变量,那么这些变量应该是如何在内部实现的。在

???在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值