我尝试在keras和tensorflow中制作简单的模型,然后将它们保存到pb文件中。运行以下命令时,我注意到tensorflow示例具有训练操作,而keras示例则没有。 问题:是否有办法在由keras模型创建的张量流图中找到火车操作,或确保已添加?tf.get_default_graph().get_operations()
import tensorflow as tf x = tf.placeholder(tf.float32, shape=[None, 1, 1], name='input') y = tf.placeholder(tf.float32, shape=[None, 1, 1], name='target') y_ = tf.identity(tf.layers.dense(x, 1), name='output') loss = tf.reduce_mean(tf.square(y_ - y), name='loss') optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01) train_op = optimizer.minimize(loss, name='train') init = tf.global_variables_initializer() saver_def = tf.train.Saver().as_saver_def() tf.get_default_graph().get_operations()
Keras示例
import tensorflow as tf from tensorflow.keras import layers model = tf.keras.Sequential() model.add(layers.GRU(20, input_shape=(10, 1), return_sequences=True, name='input')) model.add(layers.Dense(1, activation='linear')) model.compile(loss="mse", optimizer="adam") model.summary() init = tf.global_variables_initializer() saver_def = tf.train.Saver().as_saver_def() tf.get_default_graph().get_operations()
编辑
感谢DanielMöller,在进行跑步训练后,将其添加到图表中。但是,它的名称不像张量流模型那样好,后者似乎总是使用“ train”。我发现我的keras模型的名称“ training / group_deps”已保存到张量流图中。
如果可以像输入和输出一样容易找到培训名称和目标名称,可以通过以下方式找到它,那就太好了:
model.input.name model.output.name
但是我的问题似乎已经解决,但是每次都需要深入研究图形文件。因此,如果有人知道更简单的方法,将不胜感激。目标是使用tensorflows C API运行网络。
编辑2
我在tesorflow中找到了summary_graph工具。但是最初的尝试是在Windows上安装挡板失败。目前,其他事情是当务之急,因此我没有进一步介绍。
我尝试在keras和tensorflow中制作简单的模型,然后将它们保存到pb文件中。运行以下命令时,我注意到tensorflow示例具有火车操作,但...
为了社区的利益,提到以下问题的解决方案(到目前为止已实现)。>
保存为张量流图的Keras序列模型缺少训练操作?
[Tensorflow支持方面的好主意。
我设法找到正确的顺序来保存keras模型。 (至少它对我有用)。我的解释在下面的代码块注释中。