gpt4 book ai didi

python - RuntimeError : The Session graph is empty. 在调用 run() 之前向图表添加操作

转载 作者:行者123 更新时间:2023-12-01 08:24:10 25 4
gpt4 key购买 nike

我正在使用 keras 训练神经网络,由于我的数据集非常大,我使用 fit_generator 将数据提供给网络。作为 fit_generator 的第一个参数,我必须提供一个生成器,为我的模型生成数据补丁。我使用 tf.data.Dataset 来制作数据集,并使用 make_one_shot_iterator 并调用 get_next 方法为网络提供数据。这是代码

def generator():
dataset_iterator = DatasetGenerator(...) # defined class to returns a tf iterator
with tf.Session() as sess:
next_batch = dataset_iterator.get_next()

while True:
img, label = sess.run(next_batch)
# some process on label
yield img, label


# down in the code for training:
model.fit_generator(generator=generator(), ...)

这工作得很好。当我尝试将 dataset_iterator 作为参数发送给 generator 方法时,问题就开始了,如下所示:

def generator(dataset_iterator):
with tf.Session() as sess:
next_batch = dataset_iterator.get_next()

while True:
img, label = sess.run(next_batch)
# some process on label
yield img, label


# down in the code for training:
dataset_iterator = DatasetGenerator(...)
model.fit_generator(generator=generator(dataset_iterator), ...)

现在,我收到以下错误:

RuntimeError: The Session graph is empty.  Add operations to the graph before calling run().

最佳答案

我找到了处理它的方法。我发现在 generator 方法和 main 方法中打印 tf.get_default_graph() (我的意思是在调用 model.fit_generator 之前)会返回不同的图表。

为什么?我不知道!

无论如何,我通过将默认图作为另一个参数发送给函数并将其引入到 tf.Session() 来解决这个问题。像这样:

def generator(dataset_iterator, default_graph):
with tf.Session(graph=default_graph) as sess:
next_batch = dataset_iterator.get_next()

while True:
img, label = sess.run(next_batch)
# some process on label
yield img, label


# down in the code for training:
dataset_iterator = DatasetGenerator(...)
default_graph = tf.get_default_graph()
model.fit_generator(generator=generator(dataset_iterator, default_graph), ...)

我实际上不知道这是否是解决问题的最优雅的方式。非常感谢进一步的改进:)

关于python - RuntimeError : The Session graph is empty. 在调用 run() 之前向图表添加操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54404821/

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