您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将Keras模型整合到TensorFlow中

将Keras模型整合到TensorFlow中

使用Keras时,

必须先初始化变量,然后才能使用它们。实际上,它比这要微妙得多:必须 它们 初始化变量。让我们来看这个例子:

import tensorflow as tf

x = tf.Variable(0.)

with tf.Session() as sess:
    tf.global_variables_initializer().run()
    # x is initialized -- no issue here
    x.eval()

with tf.Session() as sess:
    x.eval()
    # Error -- x was never initialized in this session, even though
    # it has been initialized before in another session

因此,model不初始化您的变量就不足为奇了,因为您在之前创建了模型sess

但是,VGG16不仅会为模型变量(用调用的变量)创建初始化操作tf.global_variables_initializer,而且实际上 调用它们。问题是,在哪个范围内Session

好吧,由于在构建模型时不存在此模型,因此Keras为您创建了一个认模型,您可以使用进行恢复tf.keras.backend.get_session()。现在使用此会话可以按预期工作,因为在此会话中初始化了变量:

with tf.keras.backend.get_session() as sess:
    K.set_session(sess)
    output = sess.run(features, Feed_dict={inputs: images})
    print(output.shape)

请注意,您还可以创建自己的数据库Session并将其提供给Keras,keras.backend.set_session这正是您所做的。但是,如本例所示,Keras和TensorFlow具有不同的心态。

一个TensorFlow用户通常会首先构造一个图形,然后实例化一个Session,也许在冻结图形之后。

Keras与框架无关,并且在构造阶段之间没有这种固有的区别-特别是,我们在这里了解到Keras可以很好地 图形构造 期间 实例化Session 。

因此,在使用Keras时,我建议不要自行管理tf.Session,而应该依赖于tf.keras.backend.get_session是否需要处理需要使用TensorFlow的特定代码tf.Session

其他 2022/1/1 18:30:56 有506人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶