gpt4 book ai didi

tensorflow - 如何将训练有素的 Tensorflow 模型转换为 Keras?

转载 作者:行者123 更新时间:2023-12-03 11:53:21 25 4
gpt4 key购买 nike

我有一个训练有素的 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
其次,您像往常一样构建您的 keras 模型并通过“model.compile”完成它。请注意,您需要按名称定义每一层,然后将其添加到模型中,例如
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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com