作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个训练有素的 Tensorflow 模型和权重向量,它们已分别导出到 protobuf 和权重文件。
如何将这些转换为 Keras 可以使用的 JSON 或 YAML 和 HDF5 文件?
我有 Tensorflow 模型的代码,所以转换 tf.Session
也是可以接受的到 keras 模型并将其保存在代码中。
最佳答案
keras 的创建者 Francois Chollet 在 04/2017 中表示:“您不能将任意 TensorFlow 检查点转换为 Keras 模型。但是,您可以做的是构建一个等效的 Keras 模型,然后将权重加载到这个 Keras 模型中”
,见 https://github.com/keras-team/keras/issues/5273 .据我所知,这并没有改变。
一个小例子:
首先,您可以像这样提取 tensorflow 检查点的权重
PATH_REL_META = r'checkpoint1.meta'
# start tensorflow session
with tf.Session() as sess:
# import graph
saver = tf.train.import_meta_graph(PATH_REL_META)
# load weights for graph
saver.restore(sess, PATH_REL_META[:-5])
# get all global variables (including model variables)
vars_global = tf.global_variables()
# get their name and value and put them into dictionary
sess.as_default()
model_vars = {}
for var in vars_global:
try:
model_vars[var.name] = var.eval()
except:
print("For var={}, an exception occurred".format(var.name))
它也可能用于导出 tensorflow 模型以在 tensorboard 中使用,请参阅
https://stackoverflow.com/a/43569991/2135504
layer_1 = keras.layers.Conv2D(6, (7,7), activation='relu', input_shape=(48,48,1))
net.add(layer_1)
...
net.compile(...)
第三,您可以使用 tensorflow 值设置权重,例如
layer_1.set_weights([model_vars['conv7x7x1_1/kernel:0'], model_vars['conv7x7x1_1/bias:0']])
关于tensorflow - 如何将训练有素的 Tensorflow 模型转换为 Keras?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44466066/
我是一名优秀的程序员,十分优秀!