Keras 错误:调用 Predict_on_batch 时“优化循环失败:已取消:操作已取消”

2024-04-13

我有一些使用 keras 的旧工作代码。我最近把它掸掉并尝试使用它,但使用的是当前版本的 keras/tensorflow。调用 Predict_on_batch 时收到警告/错误:

W tensorflow/core/data/root_dataset.cc:167] 优化循环失败:已取消:操作已取消

我尝试用谷歌搜索这个问题,令我惊讶的是,网络上似乎没有很好的解释导致此问题的原因或如何解决它。这是我发现的:

https://github.com/tensorflow/tensorflow/issues/48689 https://github.com/tensorflow/tensorflow/issues/48689

https://discuss.tensorflow.org/t/optimization-loop-failed-cancelled-operation-was-cancelled/1524 https://discuss.tensorflow.org/t/optimization-loop-failed-cancelled-operation-was-cancelled/1524

它列出的一个答案是确保批量大小不大于整个集合。这里的情况并非如此。

代码有点长,所以我不能轻易地展示全部内容。这是一个深度强化学习应用程序,因此深度学习代码分为两个主要功能,我将在此处展示:

class DQN(QContract):
    def __init__(self, states, actions, lr, DDQN=False):
        self.history = []
        act_relu = activations.relu
        act_linear = activations.linear
        top_layer = 150
        middle_layer = 120
        # Create Network: Default Parameters from https://towardsdatascience.com/solving-lunar-lander-openaigym-reinforcement-learning-785675066197
        model = Sequential()
        layer = layers.Dense(top_layer, input_dim=states, activation=act_relu)
        model.add(layer)
        layer = layers.Dense(middle_layer, activation=act_relu)
        model.add(layer)
        layer = layers.Dense(actions, activation=act_linear)
        model.add(layer)
        opt = optimizers.Adam(learning_rate=lr)
        model.compile(loss='mse', optimizer=opt)
        # Create DDQN-like networks
        self.modelA = model
        #self.modelB = copy.deepcopy(model)
        self.batch_size = 100
        self.current = "A"
        self.count = 0
    def Update(self, state, action, reward, new_state, gamma, alpha=None):
        # Preform Replay
        row_count = self.batch_size
        if len(self.history) < row_count: return

        # Column names
        state = 0
        action = 1
        reward = 2
        next_state = 3
        done = 4
        # Get samples in mini-batches
        samples = random.sample(self.history, row_count)
        # Separate into separate arrays
        states_array = [sample[state] for sample in samples]
        actions_array = [sample[action] for sample in samples]
        rewards_array = [sample[reward] for sample in samples]
        next_states_array = [sample[next_state] for sample in samples]
        done_array = [sample[done] for sample in samples]
        # Turn into arrays
        states_array = np.array(states_array)
        actions_array = np.array(actions_array)
        rewards_array = np.array(rewards_array)
        next_states_array = np.array(next_states_array)
        done_array = (1.0 - np.array(done_array))

        # train on states_array
        X = states_array

        # Create y (i.e. labels for supervised learning)
        if self.current == "A":
            model1 = self.modelA
            model2 = self.modelA
        else:
            model1 = self.modelA
            model2 = self.modelA

        predicted_values = self.modelA.predict_on_batch(states_array)
        next_predicted_values = self.modelA.predict_on_batch(next_states_array)
        actual_values = rewards_array + gamma * np.amax(next_predicted_values, axis=1) * done_array

        predicted_values[list(range(row_count)), actions_array] = actual_values
        y = predicted_values

        # Update network
        self.current = "A"
        if self.current == "A":
            print('Do fit'+str(self.count))
            self.count += 1
            self.modelA.fit(X, y, epochs=1, verbose=0)
            self.current = "B"
        else:
            self.modelA.fit(X, y, epochs=1, verbose=0)
            self.current = "A"

有一次我试图做一个 DQN,但现在还不行,所以请忽略拥有两个模型的尝试。目前已禁用。

这似乎是一个相当简单的问题,但我似乎无法弄清楚。我什至尝试单步执行代码,发现单步执行调试器时并没有发生这种情况。


这个线程 https://discuss.tensorflow.org/t/optimization-loop-failed-cancelled-operation-was-cancelled/1524/29(OP提到)现在有几个回复表明添加以下行可以删除错误消息:

gpus = tf.config.experimental.list_physical_devices('GPU')
tf.config.experimental.set_memory_growth(gpu, True)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Keras 错误:调用 Predict_on_batch 时“优化循环失败:已取消:操作已取消” 的相关文章

随机推荐

  • 在 Android 中下载并解压 Zip 文件 [重复]

    这个问题在这里已经有答案了 我的应用程序正在从服务器下载 zip 文件并解压该 zip 文件并将文件保存到 SD 卡中 但问题是如果我下载 4 5 MB 的 zip 文件并解压它 这工作正常 但如果我下载 30 35 MB zip 文件这会
  • 在 C# 中重命名文件

    如何使用 C 重命名文件 看一眼系统 IO 文件 移动 http msdn microsoft com en us library system io file move aspx 将文件 移动 到新名称 System IO File Mo
  • Helm 中的 PostgreSQL:initdbScripts 参数

    PostgreSQL 的默认 Helm Chart 即stable postgresql 定义了一个initdbScripts允许运行初始化脚本的参数 但是 我似乎无法获得正确的格式来了解如何通过命令行发出它 有人可以提供如何填充此命令行参
  • Haskell 列表的嵌套笛卡尔积

    我想创建一种方法 可以给它一个长度列表 它会返回达到这些长度的笛卡尔坐标的所有组合 用一个例子更容易解释 cart 2 5 Prelude gt 0 0 0 1 0 2 0 3 0 4 1 0 1 1 1 2 1 3 1 4 cart 2
  • 如何使用 JCalendar 选择数组中的元素?

    我有一个 3D 数组 其中包含 38 年 12 个月和每个月 31 个条目 无论该月有多少天 就像这样 array 38 12 31 我还有一个 JCalendar 现在除了看起来很漂亮之外什么也不做 并且 JCalendar 下面有一个按
  • 关于人脸验证(相对于人脸识别)的置信度分数有什么建议吗?

    我在代码中使用特征脸 PCA 进行人脸识别 我使用了OpenCV网站上的教程作为参考 虽然这对于识别人脸非常有用 即它可以正确地告诉您谁是谁 但基于置信度分数的人脸验证 或冒名顶替者检测 验证人脸是否已注册在训练集中 根本不起作用 我计算欧
  • 查找两个数组之间的共同值

    如果我想比较两个数组并创建一个插值输出字符串 如果数组中的数组变量 y存在于x如何获得每个匹配元素的输出 这就是我正在尝试的 但没有完全得到结果 x 1 2 4 y 5 2 4 x each do num puts The number n
  • 将 0xFF 写入文件时出现问题

    我正在尝试使用 PrintStream 将 0xFF 写入 java 文件 当我使用十六进制编辑器打开文件时 其他值会正确写入文件 但应该显示 0xFF 的值却显示为 0xC3BF 使用的变量类型是int 经过几次尝试后 我还发现我可以输入
  • List>Remove() 方法

    我想在列表列表上使用 Remove 方法 但它对我不起作用 简单的例子应该说明一切 List
  • Laravel 多个 WHERE 子句

    我需要向 Laravel SQL 查询添加多个 where 子句 到目前为止我的 PHP 代码是 date default timezone set America Los Angeles today getdate year today
  • Magento 购物车未更新阿拉伯语商店视图中的数量

    我在 Magento 1 8 1 安装中遇到以下问题 我有两种商店视图 英语 默认 和阿拉伯语 在英文商店视图中 如果我将产品添加到购物车 我可以通过在数量框中输入新数量并单击更新购物车来修改数量 这会更改数量和总数 但是 当我切换到阿拉伯
  • @font-face 在 Firefox 中不配合

    我尝试了很多事情 包括单击与我的问题相关的所有问题 有很多 并尝试了他们所有的 解决方案 但没有一个对我有用 我尝试将 eot 文件包装在条件 IE 语句中 但这也不起作用 有人说如果你不在自己的服务器上托管文件 font face 将无法
  • 尽管被捕获,生成器内部抛出的错误还是完成了它

    我有一个异步生成器函数 它内部调用几个可能引发错误的异步函数 我想要的是 当错误发生时 生成器只是记录它 然后继续进一步工作 所以我有这样的代码 async getAll somestuff try const thing await fe
  • 通过 Git 推送大文件的问题

    目前 当我尝试推送到 Git 存储库时 出现以下错误 remote error GH001 Large files detected remote error Trace 7bbfe5c1099cfe679aa3cd1eee13e10a r
  • 汇编语言中数组的冒泡排序

    我需要对一个无组织的数组进行冒泡排序 其中包含从最大到最小的 7 个整数 因此它看起来像 9 6 5 4 3 2 1 我通过编译器运行我的代码 它说 我不明白这段代码有什么问题 code segment assume ds code cs
  • 下标迭代器内的 lambda

    在下标运算符中使用 lambda 似乎不适用于 g 和 clang 这是 C 标准中的实现错误还是 不愉快 的规则 Example class A public template
  • XAML 绑定到属性

    我的 XAML C Windows 应用商店应用程序中有复选框 我还有 bool 属性 WindowsStoreTestApp SessionData RememberUser这是公共的和静态的 我想要复选框的属性IsChecked与此 b
  • jQuery 中的多个 AJAX 请求

    我有一个函数 可以从两个位置提取数据并将返回的内容放置在向用户显示的模式对话框上 这两个请求都是异步的 因为它们是跨域的 问题在于我不想在两个请求完成加载之前显示模式 在加载模式之前 如何检查以确保两个请求都已完成 我尝试将 openMod
  • 无法找到 XML 模式命名空间的 Spring NamespaceHandler [http://www.springframework.org/schema/batch]

    情况 我正在使用 Spring Batch 为我们的数据仓库构建累积快照 但我遇到了一个我无法弄清楚的配置障碍 我使用 STS SpringSource Tool Suite 2 8 1 创建了一个简单的 Spring Batch 项目春季
  • Keras 错误:调用 Predict_on_batch 时“优化循环失败:已取消:操作已取消”

    我有一些使用 keras 的旧工作代码 我最近把它掸掉并尝试使用它 但使用的是当前版本的 keras tensorflow 调用 Predict on batch 时收到警告 错误 W tensorflow core data root d