我有一个训练有素的模型,该模型保存在3个文件中,并使用一些tensorflow(1.x)代码行。 为了将其导入到Matlab中,我需要将模型转换为.h5(keras)。
模型保存为3个文件:
张量流代码行如下:
zzz = "a function of the previous line"
session_name = "a function of xxx"
sess = tf.Session()
saver = tf.train.Saver()
saver.restore(sess,session_name)
output=sess.run(zzz, ...)
是否可以将经过培训的网络导出到H5文件? 如果是,该怎么办?
添加:我已经问过一个朋友,显然不可能直接这样做是因为,首先,我必须“翻译” Keras中的网络结构。对于我在域中的级别而言,此步骤太难了。
答案 0 :(得分:0)
据我所知,目前尚无方法直接使用检查点文件并秘密隐藏到h5(keras)。取而代之的是,您可以通过执行以下一些较小的解决方法来实现此目的。
TensorFlow .ckpt
读取tf.train.NewCheckpointReader
文件,然后调用{{1 }}方法用于每个对应的层。 下面提到的相同示例代码:
set_weights()
您可以使用保存的.npy文件在h5(keras)中输出模型权重,如下所示。
reader = tf.train.NewCheckpointReader(filename)
for key in reader.get_variable_to_shape_map():
# not saving the following tensors
if key == 'global_step':
continue
if 'AuxLogit' in key:
continue
# convert tensor name into the corresponding Keras layer weight name and save
path = os.path.join(output_folder, get_filename(key))
arr = reader.get_tensor(key)
np.save(path, arr)