【发布时间】:2019-12-10 03:10:13
【问题描述】:
我尝试在 keras 和 tensorflow 中制作简单的模型,然后将它们保存到 pb 文件中。运行以下命令时,我注意到 tensorflow 示例具有 train 操作,但 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()
编辑
感谢 Daniel Möller,将跑步健身训练添加到图表中。 但是,它的命名不如似乎总是使用“train”的 tensorflow 模型好。我发现我的 keras 模型的名称“training/group_deps”保存到张量流图中。
如果训练名称和目标名称可以像输入和输出一样容易找到,那就太好了,可以通过以下方式找到:
model.input.name
model.output.name
但我的问题似乎解决了,但每次都需要挖掘图形文件。因此,如果有人知道更简单的方法,将不胜感激。目标是使用 tensorflows C API 运行网络。
编辑 2
我在 tesorflow 中找到了 summarise_graph 工具。但是最初的构建它的尝试在 windows 上使用挡板失败了。目前其他事情是优先事项,所以我没有进一步处理。
【问题讨论】:
-
出于好奇,在保存之前尝试调用 fit。
-
好主意。它似乎奏效了。更多代码运行并遇到了不同的错误。进步哈哈。
标签: python tensorflow keras