- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Keras模型转成tensorflow的.pb操作由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
Keras的.h5模型转成tensorflow的.pb格式模型,方便后期的前端部署。直接上代码 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
from
keras.models
import
Model
from
keras.layers
import
Dense, Dropout
from
keras.applications.mobilenet
import
MobileNet
from
keras.applications.mobilenet
import
preprocess_input
from
keras.preprocessing.image
import
load_img, img_to_array
import
tensorflow as tf
from
keras
import
backend as K
import
os
base_model
=
MobileNet((
None
,
None
,
3
), alpha
=
1
, include_top
=
False
, pooling
=
'avg'
, weights
=
None
)
x
=
Dropout(
0.75
)(base_model.output)
x
=
Dense(
10
, activation
=
'softmax'
)(x)
model
=
Model(base_model.
input
, x)
model.load_weights(
'mobilenet_weights.h5'
)
def
freeze_session(session, keep_var_names
=
None
, output_names
=
None
, clear_devices
=
True
):
from
tensorflow.python.framework.graph_util
import
convert_variables_to_constants
graph
=
session.graph
with graph.as_default():
freeze_var_names
=
list
(
set
(v.op.name
for
v
in
tf.global_variables()).difference(keep_var_names
or
[]))
output_names
=
output_names
or
[]
output_names
+
=
[v.op.name
for
v
in
tf.global_variables()]
input_graph_def
=
graph.as_graph_def()
if
clear_devices:
for
node
in
input_graph_def.node:
node.device
=
""
frozen_graph
=
convert_variables_to_constants(session, input_graph_def,
output_names, freeze_var_names)
return
frozen_graph
output_graph_name
=
'NIMA.pb'
output_fld
=
''
#K.set_learning_phase(0)
print
(
'input is :'
, model.
input
.name)
print
(
'output is:'
, model.output.name)
sess
=
K.get_session()
frozen_graph
=
freeze_session(K.get_session(), output_names
=
[model.output.op.name])
from
tensorflow.python.framework
import
graph_io
graph_io.write_graph(frozen_graph, output_fld, output_graph_name, as_text
=
False
)
print
(
'saved the constant graph (ready for inference) at: '
, os.path.join(output_fld, output_graph_name))
|
补充知识:keras h5 model 转换为tflite 。
在移动端的模型,若选择tensorflow或者keras最基本的就是生成tflite文件,以本文记录一次转换过程.
环境 。
tensorflow 1.12.0 。
python 3.6.5 。
h5 model saved by `model.save('tf.h5')` 。
直接转换 。
1
2
3
|
`tflite_convert
-
-
output_file
=
tf.tflite
-
-
keras_model_file
=
tf.h5`
output
`TypeError: __init__() missing
2
required positional arguments:
'filters'
and
'kernel_size'
`
|
先转成pb再转tflite 。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
```
git clone git@github.com:amir
-
abdi
/
keras_to_tensorflow.git
cd keras_to_tensorflow
python keras_to_tensorflow.py
-
-
input_model
=
path
/
to
/
tf.h5
-
-
output_model
=
path
/
to
/
tf.pb
tflite_convert \
-
-
output_file
=
tf.tflite \
-
-
graph_def_file
=
tf.pb \
-
-
input_arrays
=
convolution2d_1_input \
-
-
output_arrays
=
dense_3
/
BiasAdd \
-
-
input_shape
=
1
,
3
,
448
,
448
```
|
参数说明,input_arrays和output_arrays是model的起始输入变量名和结束变量名,input_shape是和input_arrays对应 。
官网是说需要用到tenorboard来查看,一个比较trick的方法 。
先执行上面的命令,会报convolution2d_1_input找不到,在堆栈里面有convert_saved_model.py文件,get_tensors_from_tensor_names()这个方法,添加`print(list(tensor_name_to_tensor))` 到 tensor_name_to_tensor 这个变量下面,再执行一遍,会打印出所有tensor的名字,再根据自己的模型很容易就能判断出实际的name.
以上这篇Keras模型转成tensorflow的.pb操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.
原文链接:https://blog.csdn.net/q6324266/article/details/85262438 。
最后此篇关于Keras模型转成tensorflow的.pb操作的文章就讲到这里了,如果你想了解更多关于Keras模型转成tensorflow的.pb操作的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我正在尝试读取和处理一个大的 json 文件(~16G),但即使我通过指定 chunksize=500 读取小块,它仍然有内存错误。我的代码: i=0 header = True for chunk
请看下图... 我想通过 CSS 实现。 我现在将此分隔符用作在我的容器内响应的图像 ( jpg )。问题是我似乎无法准确匹配颜色或使白色晶莹剔透。 我认为 CSS 是解决这个问题的最佳方式。 尺寸为
所以我正在尝试使用 AngularJS 和 Node.js。我正在尝试设置客户端路由,但遇到一些问题。 编辑 所以我改变了一些代码如下 https://github.com/scotch-io/sta
我想创建如下图所示的边框: 这段代码是我写的 Some Text p{ -webkit-transform: perspective(158px) rotateX(338deg); -webk
好的,所以我有一个包含 2 个选项的选择表 $builder->add('type', 'choice', array( 'label' => 'User type', 'choice
我的代码: private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { ngr.
我正在尝试编写 Tic-Tac-Toe 游戏代码,但不知道如何在轮到我时push_back '+' 字符。 因此,每当玩家输入例如“Oben 链接”时,这基本上意味着左上角,我希望游戏检查输入是否正确
我正在研究 HtmlHelper.AnonymousObjectToHtmlAttributes。 它适用于匿名对象: var test = new {@class = "aaa", placehol
在 stackoverflow 上所有这些 mod 重写主题之后,我仍然没有找到我的问题的答案。我有一个顶级站点,基本上我想做的就是将 /index.php?method=in&cat=Half+Li
仅使用 CSS 可以实现此功能区吗? 最佳答案 .box { width: 300px; height: 300px; background-color: #a0a0a0;
我有一个 jbuilder 模板,它用 json 表示我的一个模型,如下所示: json.(model, :id, :field1, :field2, :url) 如果我只是从控制台访问该字段,则 u
昨天我问了一个问题 - Draw arrow according to path 在那个问题中,我解释说我想在 onTouchEvent 的方向上绘制一个箭头。我在评论中得到了答案,说我应该旋转 Ca
我希望段落中的代码与代码块中显示的代码一致。 例如: The formula method for a linear model is lm(y~x, data = dat). For our da
我使用 ViewPager 获得了一个选项卡菜单。每个选项卡都包含来自 android.support.v4 包的 fragment (与旧 SDK 的兼容性)。其中一个 fragment 是 Web
我正在从事一项需要多种程序能力的科学项目。在四处寻找可用的工具后,我决定使用 Boost 库,它为我提供了 C++ 标准库不提供的所需功能,例如日期/时间管理等。 我的项目是一组命令行,用于处理来自旧
外媒 Windows Latest 报道,随着 Windows 10 的不断发展,某些功能会随着新功能的更新而被抛弃或成为可选项。早在 2018 年,微软就确认截图工具将消失,现代的 “截图和草图”
我有标记的 Angular ,我只希望标记旋转到那个 Angular 。 marker = new google.maps.Marker({ position: myL
我一定是遗漏了什么,但我不知道是什么。我有使用 polymer 实现的简单自定义元素: TECK ..
我有一个关于如何设置我们产品的分步教程。我必须在每个步骤中显示大量示例代码。以下是我必须在页面中显示的代码类型列表。我用什么来格式化所有内容? Java 代码示例 XML 样本 iOS SDK 文件(
我需要在我的 iPad 应用程序中绘制一些图表,所以我遵循了本教程: http://recycled-parts.blogspot.com/2011/07/setting-up-coreplot-in
我是一名优秀的程序员,十分优秀!