恢复保存的 TensorFlow 模型以在测试集上进行评估

2023-12-13

我见过几个posts恢复时TF模型和Google文档页面位于导出图表但我想我错过了一些东西。

我使用这个中的代码Gist将模型与此 utils 文件一起保存到其中defines该模型

现在我想恢复它并在以前未见过的测试数据中运行,如下所示:

def evaluate(X_data, y_data):
    num_examples = len(X_data)
    total_accuracy = 0
    total_loss = 0
    sess = tf.get_default_session()
    acc_steps = len(X_data) // BATCH_SIZE
    for i in range(acc_steps):
        batch_x, batch_y = next_batch(X_val, Y_val, BATCH_SIZE)

        loss, accuracy = sess.run([loss_value, acc], feed_dict={
                images_placeholder: batch_x,
                labels_placeholder: batch_y,
                keep_prob: 0.5
                })
        total_accuracy += (accuracy * len(batch_x))
        total_loss += (loss * len(batch_x))
    return (total_accuracy / num_examples, total_loss / num_examples)

## re-execute the code that defines the model

# Image Tensor
images_placeholder = tf.placeholder(tf.float32, shape=[None, 32, 32, 3], name='x')

gray = tf.image.rgb_to_grayscale(images_placeholder, name='gray')

gray /= 255.

# Label Tensor
labels_placeholder = tf.placeholder(tf.float32, shape=(None, 43), name='y')

# dropout Tensor
keep_prob = tf.placeholder(tf.float32, name='drop')

# construct model
logits = inference(gray, keep_prob)

# calculate loss
loss_value = loss(logits, labels_placeholder)

# training
train_op = training(loss_value, 0.001)

# accuracy
acc = accuracy(logits, labels_placeholder)

with tf.Session() as sess:
    loader = tf.train.import_meta_graph('gtsd.meta')
    loader.restore(sess, tf.train.latest_checkpoint('./'))
    sess.run(tf.initialize_all_variables())   
    test_accuracy = evaluate(X_test, y_test)
    print("Test Accuracy = {:.3f}".format(test_accuracy[0]))

我得到的测试准确度仅为3%。但是,如果我在训练模型后不关闭笔记本并立即运行测试代码,我会得到一个95%准确性。

这让我相信我没有正确加载模型?


问题源于这两行:

loader.restore(sess, tf.train.latest_checkpoint('./'))
sess.run(tf.initialize_all_variables())   

第一行从检查点加载保存的模型。第二行重新初始化模型中的所有变量(例如权重矩阵、卷积滤波器和偏差向量),通常为随机数,以及覆盖加载的值。

解决方案很简单:删除第二行(sess.run(tf.initialize_all_variables()))并且评估将使用从检查点加载的训练值进行。


附言。此更改很有可能会给您带来有关“未初始化变量”的错误。在这种情况下,你应该执行sess.run(tf.initialize_all_variables())初始化未保存在检查点中的任何变量before执行loader.restore(sess, tf.train.latest_checkpoint('./')).

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

恢复保存的 TensorFlow 模型以在测试集上进行评估 的相关文章

  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • 从 swift 数组创建张量

    这工作正常 import TensorFlow var t Tensor
  • 如何从张量流数据集迭代器返回同一批次两次?

    我正在转换一些旧代码以使用数据集 API 此代码使用feed dict将一批数据送入列车运行 实际上是三次 然后重新计算损失以供显示使用同一批 所以我需要一个迭代器来返回完全相同的批次两次 或多次 不幸的是 我似乎找不到一种使用张量流数据集
  • Tensorflow Eager Execution 不适用于学习率衰减

    在这里尝试让一个热切的执行模型与 LR 衰减一起工作 但没有成功 这似乎是一个错误 因为学习率衰减张量似乎没有更新 如果我遗漏了什么 你可以帮我一下吗 谢谢 下面的代码正在学习一些词嵌入 但是 那学习率衰减部分根本不起作用 class Wo
  • 具有动态 num_partitions 的动态分区

    变量num partitions在方法中tf dynamic partition不是一个Tensor 但是一个int 因此 如果事先不知道分区的数量 则无法通过计算唯一值的数量等方式从数据中推断出分区的数量 也无法通过tf placehol
  • 如何使用 Python 多处理避免在分叉进程中加载​​父模块

    当您创建一个Pool使用Python的进程multiprocessing 这些进程将分叉 父进程中的全局变量将显示在子进程中 如下面的问题所述 如何限制多处理进程的范围 https stackoverflow com questions 2
  • “Flatten”在 Keras 中的作用是什么?

    我试图理解的角色FlattenKeras 中的函数 下面是我的代码 这是一个简单的两层网络 它接收形状为 3 2 的二维数据 并输出形状为 1 4 的一维数据 model Sequential model add Dense 16 inpu
  • AudioSet 和 Tensorflow 理解

    With AudioSet https research google com audioset index html发布并为那些进行合理研究分析的人提供了一个全新的研究领域 最近几天我一直在努力深入研究如何分析和解码这些数据 数据在 tf
  • 为什么我的 GradientDescentOptimizer 会产生 NaN?

    我目前正在修改 Andrew Ng 教授在 Coursera 上的 机器学习 课程作业 但我陷入了逻辑回归部分 filename data ex2data1 txt data np loadtxt filename delimiter un
  • tf.reshape 与 tf.contrib.layers.flatten

    所以我正在运行 CNN 来解决分类问题 我有 3 个转换层和 3 个池化层 P3是最后一个池化层的输出 其维度为 Batch size 4 12 48 我想将该矩阵展平为 Batch size 2304 尺寸矩阵 为2304 4 12 48
  • 无法保存自定义子类模型

    灵感来自tf keras Model 子类化 https www tensorflow org guide keras model subclassing我创建了自定义模型 我可以训练它并获得成功的结果 但是我无法保存它 我使用 pytho
  • TensorFlow 的 Print 或 K.print_tensor 不会在损失函数中打印中间张量

    我为 Keras 模型编写了一个相当复杂的损失函数 并且它不断返回nan训练时 因此 我需要在训练时打印中间张量 我知道你不能在损失函数中执行 K eval 因为张量未初始化 不过 我都尝试过K print tensor and tf Pr
  • Edge TPU 编译器:错误:quantized_dimension 必须在 [0, 1) 范围内。是 3

    我正在尝试让 Mobilenetv2 模型 对我的数据重新训练最后一层 在 Google 边缘 TPU Coral 上运行 我已按照本教程进行操作https www tensorflow org lite performance post
  • 张量流错误utf-8 OS X Sierra

    我已经在 OS X Sierra 上安装了 TensorFlow 和 Anaconda 我在安装过程中没有遇到任何问题 写出典型的例子 import tensorflow as tf a tf constant 5 name input a
  • 使用张量流 tf-transform 进行数据标准化

    我正在使用 Tensorflow 对我自己的数据集进行神经网络预测 我做的第一个模型是与我计算机中的小数据集一起使用的模型 之后 我稍微更改了代码 以便使用具有更大数据集的 Google Cloud ML Engine 在 ML Engin
  • 训练某些网络时,Keras(Tensorflow 后端)在 GPU 上比在 CPU 上慢

    我很难理解为什么 GPU 和 CPU 速度在小规模网络中相似 CPU 有时更快 而 GPU 在大规模网络中更快 问题底部的代码在 i7 6700k 上运行时间为 103 7 秒 但使用tensorflow gpu 时 代码运行时间为 29
  • 张量流:RStudio 中的 [NOT FOUND] 错误

    我尝试在中运行以下代码RStudio library tensorflow x data lt runif 100 min 0 max 1 y data lt x data 0 1 0 3 W lt tf Variable tf rando
  • TensorFlow Batch 外积

    我有以下两个张量 x with shape U N y with shape N V 我想执行批量外积 我想将第一列中的每个元素相乘x由第一行中的每个元素y得到形状张量 U V 然后第二列x由第二行y 等等 最终张量的形状应该是 N U V
  • 如何在Tensorflow中读取json文件?

    我正在尝试编写一个函数 用于读取张量流中的 json 文件 json 文件具有以下结构 bounding box y 98 5 x 94 0 height 197 width 188 rotation yaw 27 970195770263
  • 重置Keras模型的所有权重

    我希望能够重置整个 Keras 模型的权重 这样我就不必再次编译它 编译模型目前是我的代码的主要瓶颈 这是我的意思的一个例子 import tensorflow as tf model tf keras Sequential tf kera

随机推荐

  • 如何在 JavaScript 中解压缩 gzip 文件?

    我已经得到了ArrayBuffer数据 如下称为 s 由许多块组成 从我们的服务端生成 blob 生成如下 var blob new Blob s slice 4 82838 但我制作的 blob 是 gzip 数据 如何在 javascr
  • 在 Android 手机上部署应用程序时找不到 java.time.LocalDateTime 类 [重复]

    这个问题在这里已经有答案了 当我在 Android 手机上部署 Android 应用程序时 我遇到了 ClassNotFoundException 我在 Android 6 0 1 和 Android 7 1 1 的 Android 手机上
  • 执行 xp_cmdshell bcp 语法

    我似乎找不到正确的语法来使用 sql server management studio 中的 exec xp cmdshell bcp 导出具有列名称的数据 我尝试了以下变体 EXEC xp cmdshell bcp select a id
  • CSS,更改链接中图标字体的悬停效果

    我有一个像这样的导航元素 ul class options list li a href i class icon icon print i Print This a li li a href i class icon icon envel
  • 将当前时间放入标签中

    我正在尝试使用日期获取日期和时间 但是当我运行应用程序时 它需要第一次执行应用程序时间 并且短时间内的日期不会改变 NSDate StrDate NSDate date NSDateFormatter Dateformat NSDateFo
  • javax.validation.constraints.Pattern 注释的参数化错误消息?

    我有一个具有类型字段的实体String我在其上定义了一个 Pattern注释强制执行与给定正则表达式匹配的字段内容 现在我想知道是否可以参数化约束 例如在定义的验证错误消息中显示与正则表达式不匹配的第一个字符 更糟糕的是 违反约束时显示的错
  • 在 C 中使用 pow() 函数会引发未定义的引用错误

    为什么下面的代码在 C 中可以工作 int res pow 2 3 printf d n res 而另一个则没有 int a 2 int b 3 int res pow a b printf d n res 即使我尝试 double a 2
  • onSaveInstanceState() 和 onRestoreInstanceState()

    我正在尝试保存并恢复状态Activity使用方法onSaveInstanceState and onRestoreInstanceState 问题是它永远不会进入onRestoreInstanceState 方法 谁能向我解释这是为什么 通
  • Android 自定义相机变焦不起作用

    我看过关于这个主题的其他几个问题 但似乎没有一个能解决我的问题 我有一个自定义相机应用程序 除了变焦按钮之外 一切都工作正常 这是我使用 SDK min 8 target 14 的代码 Override public void surfac
  • 有效计算两个数据集之间的成对半正矢距离 - NumPy / Python

    我想计算经纬度之间的地理距离 我已经检查过这个线程Python 中向量化半正矢距离计算但是当我将它用于两组不同的坐标时 我收到错误 df1 的大小可以是数百万 如果有任何其他方法可以在更短的时间内计算准确的地理距离 那么它将非常有帮助 le
  • 为什么即使没有内存重新分配,在 for 循环中调用 Push_back 也是不安全的?

    当我读到这篇文章时 https stackoverflow com a 42448319 3336423 据我所知 在 for 循环中调用 push back 是不安全的 因为 如果新的 size 大于容量 则所有迭代器和 引用 包括尾后迭
  • \n 不起作用,不会换行

    我正在创建一个小程序 它将 int 值保存到文本文件中 保存它 并在您再次启动程序时加载它 现在 我需要另外 3 个布尔值存储在文本文件中 我正在文件中写入内容 public Formatter x x format s m getPoin
  • Mailchimp api v3 - 无法基于文本合并字段创建分段

    我正在尝试使用 condition type TextMerge 创建基于我刚刚创建的 TEXT 类型的新合并字段的段 因为它似乎是其文档中与我的字段匹配的唯一选项 http developer mailchimp com document
  • 从关闭的 Excel 文件获取范围

    我一直在尝试从封闭的 Excel 文件中获取数据 到目前为止 还没有发布的解决方案可以在不打开源工作簿的情况下实现此目的 我尝试过使用 ExecuteExcel4Macro 命令 但无法使用该命令 因为我需要 VLOOKUP 的搜索功能 然
  • Python lxml 中的 XML 漂亮打印失败

    我正在尝试使用 Python 2 7 6 中的 lxml 4 1 1 读取 修改和写入 XML 文件 My code import lxml etree as et fn xml in in xml parser et XMLParser
  • 将自定义类与向量一起使用:“std::vector”默认构造函数错误

    我正在尝试创建一个定义项目的类和另一个定义库存的类 其中包含项目的向量列表 但是 通过下面的解决方案 我遇到了多个错误 最值得注意的是 std vector no appropriate default constructor availa
  • 无法单击 Selenium Webdriver 中的单选按钮

    我正在使用 Java 学习 Selenium Webdriver 作为学习示例 我尝试打开打造我的旅行 使用权国际航班页面并点击One WayGoogle Chrome 中的单选按钮 我尝试了不同的方法来找到这个单选按钮 但它仍然不起作用
  • GNU readline 和键绑定

    I ve read from the GNU getline documentation that it s capable for binding some callback functions to some keys I know a
  • 如何更改 NetCDF 中的经度范围

    我的 NetCDF 文件有 4 个维度 经度 纬度 时间 水平压力 和几个变量 我想将经度数据 340 342 344 360 0 2 4 18 20 替换为 20 18 16 2 0 2 4 18 20 事实上 经度是从 0 到 360
  • 恢复保存的 TensorFlow 模型以在测试集上进行评估

    我见过几个posts恢复时TF模型和Google文档页面位于导出图表但我想我错过了一些东西 我使用这个中的代码Gist将模型与此 utils 文件一起保存到其中defines该模型 现在我想恢复它并在以前未见过的测试数据中运行 如下所示 d