Tensorflow:“GraphDef 不能大于 2GB。”分配变量后保存模型时出错

2024-02-28

我想用一个预训练的模型来热启动另一个有一点差异的模型。简而言之,我创建一个新模型,并使用预训练的模型权重分配具有相同名称的变量。但是,在保存模型时,出现错误。

Traceback (most recent call last): File "tf_test.py", line 23, in <module> save_path = saver.save(sess, "./model.ckpt") File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/saver.py", line 1308, in save self.export_meta_graph(meta_graph_filename) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/saver.py", line 1331, in export_meta_graph graph_def=ops.get_default_graph().as_graph_def(add_shapes=True), File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 2268, in as_graph_def result, _ = self._as_graph_def(from_version, add_shapes) File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/ops.py", line 2231, in _as_graph_def raise ValueError("GraphDef cannot be larger than 2GB.") ValueError: GraphDef cannot be larger than 2GB.

示例代码如下:

import tensorflow as tf
import numpy as np

v1 = tf.get_variable("L_enc", [400000, 1024])
v2 = tf.get_variable("L_dec", [400000, 1024])

init_op = tf.initialize_all_variables()

saver = tf.train.Saver(tf.all_variables())

with tf.Session() as sess:
  sess.run(init_op)
  for v in tf.trainable_variables():
    embedding = np.random.uniform(-1, 1, (400000, 1024))
    sess.run(v.assign(embedding))
  # Save the variables to disk.
  save_path = saver.save(sess, "./model.ckpt")
  print("Model saved in file: %s" % save_path)

法布里奇奥正确地指出 https://stackoverflow.com/a/42401742/3574081协议缓冲区的大小有 2GB 的硬性限制,但您可能想知道why你的程序达到了这个限制。问题源于这些行:

for v in tf.trainable_variables():
  embedding = np.random.uniform(-1, 1, (400000, 1024))
  sess.run(v.assign(embedding))

当执行命中时v.assign(embedding),新节点将添加到 TensorFlow 图中。特别是,每个embedding数组被转换为tf.constant() https://www.tensorflow.org/api_docs/python/tf/constant张量,会很大(我估计大约 328MB)。

避免这种情况的最佳方法是使用以下命令将先前模型中的变量直接加载到新模型中:tf.train.Saver https://www.tensorflow.org/api_docs/python/tf/train/Saver。由于模型可能具有不同的结构,因此您可能需要指定从旧模型中的变量名称到新模型的映射。tf.Variable新模型中的对象。


解决问题的另一种方法是预先创建一个tf.placeholder() https://www.tensorflow.org/api_docs/python/tf/placeholderop 用于为每个变量分配一个值。这可能需要对实际代码进行更多重组,但以下内容对我有用:

v1 = tf.get_variable("L_enc", [400000, 1024])
v2 = tf.get_variable("L_dec", [400000, 1024])

# Define a separate placeholder and assign op for each variable, so
# that we can feed the initial value without adding it to the graph.
vars = [v1, v2]
placeholders = [tf.placeholder(tf.float32, shape=[400000, 1024]) for v in vars]
assign_ops = [v.assign(p) for (v, p) in zip(vars, placeholders)]

init_op = tf.global_variables_initializer()

saver = tf.train.Saver(tf.all_variables())

with tf.Session() as sess:
  sess.run(init_op)
  for p, assign_op in zip(placeholders, assign_ops):
    embedding = np.random.uniform(-1, 1, (400000, 1024))
    sess.run(assign_op, {p: embedding})

  # Save the variables to disk.
  save_path = saver.save(sess, "./model.ckpt")
  print("Model saved in file: %s" % save_path)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tensorflow:“GraphDef 不能大于 2GB。”分配变量后保存模型时出错 的相关文章

随机推荐

  • 浏览器对 CSS :first-child 和 :last-child 的支持

    有谁知道哪些浏览器 版本支持它们 使用它们是否安全 或者我应该诉诸 PHP javascript 来生成第一个 最后一个类 first child and last child http www quirksmode org css fir
  • PHP 5.3 中自动加载命名空间?

    如何在 PHP 5 3 中使用 autoload 和命名空间 我在与脚本分开的命名空间中有一个主要的自动加载函数 我还调用具有不同名称空间的类 这并不奇怪 但是 它没有找到自动加载功能 我是否必须为每个命名空间重新创建自动加载函数 这似乎不
  • “Office 2010 加载项:图标库” - 如何从后台选项卡中提取图标 (docx)

    我下载了 Office 2010 加载项 图标库 https www microsoft com en in download confirmation aspx id 21103 这是一个 docx 文件 有两个包含图标的后台选项卡 如何
  • 在c#中将bool表达式转换为char

    当我遇到如下问题时 我通过了 NET 测验 Char ch Convert ToChar a e c a 在控制台中我们可以看到输出ch变量是g 有人可以描述发生了什么吗 谢谢 是二元或运算符 a binary representation
  • 将重复值复制粘贴到大型 Excel 文件的列中

    我遇到了一个问题 希望得到一些帮助 这是我现在正在处理的内容 我想要的是 B C 和 D 列复制到其下面的空白行 直到它到达新客户端 如下所示 非常感谢任何和所有的帮助 Thanks 非VBA解决方案 Select entire range
  • 使用 jQuery 按住 Shift + 鼠标悬停

    我试图检测当光标移动到特定元素上时是否按下了 Shift 键 该函数会触发 但仅after我首先单击另一个元素 有什么方法可以解决这个问题吗 我尝试将焦点设置为文档和元素 并尝试创建伪单击功能 但到目前为止没有任何效果 例如 以下代码仅在我
  • OpenCL clGetPlatformIDs 异常

    我使用此包安装附带的示例中的 HelloWorld 示例 AMD 套件 http developer amd com tools and sdks heterogeneous computing amd accelerated parall
  • SQL 调用临时表中的最大行数

    在临时表中只有两列可用 我想获取每次加载的最新ID 如下图所示 我已经尝试过 但它没有给我我需要的答案 select max rn plus 1 a load a id from select a load a id ROW NUMBER
  • 交互式 lua:命令行参数

    我想做 lua prog lua arg1 arg2 从命令行 在prog lua里面 我想说 比如 print arg1 arg2 n Lua 似乎没有 argv 1 等 而且我见过的处理命令行参数的方法似乎不成熟和 或麻烦 我错过了什么
  • 在 Express 中使用“jade”模板引擎时渲染“html”

    你如何渲染一个html文件 同时保持模板引擎为jade app set view engine jade 是我将模板引擎设置为jade我想做一些类似的事情 app get world function req res res render
  • Android:ScrollView 内的 Horizo​​ntalScrollView

    我有多个水平滚动视图里面一个滚动视图 水平滚动一点也不流畅 我必须几乎完全水平滚动才能滚动才能工作 有没有一个简单的修复方法可以调整这个 谢谢 您可以将 Recycler 视图与交错布局管理器一起使用 StaggeredGridLayout
  • 如何为 TFS 上的 dockerized F# Expecto 测试配置 CI

    我有一些码头化的由 Expecto 和 fscheck 框架编写的 F 测试 作为 dotnet 核心独立可执行文件 如何在 Team Foundation Server 上配置持续集成以运行它们并在每次运行后获取相应的报告 如果您的意思是
  • Play Framework:合并多模块项目中的多个全局对象

    我正在使用 Play 2 3 和 Java 8 构建一个多模块项目 根应用程序和每个模块都有一个全局对象 但我们如何知道 Play 仅使用根应用程序中的一个全局对象 简化的文件夹结构 root app Global java conf ap
  • SAS 中的“auto.arima”?

    我曾经使用 auto arima 在 R 中运行 arima 模型来识别适合数据的最佳 arima 模型 即使没有它 在 R 中编写一个函数来执行类似的任务也很容易 然而 我这几天google了一下 在SAS中找不到类似的过程 有谁知道SA
  • 在Python中应用PMML预测模型

    Knime 为我生成了PMML http en wikipedia org wiki Predictive Model Markup Language模型 这时候我想把这个模型应用到一个python进程中 这样做的正确方法是什么 更深入 我
  • 在应用程序浏览器中将 Instagram 转义至 Safari

    我的网站中有一个链接 可以重定向到 Instagram 登录以获取一些照片 但该页面无法在 iOS 设备上的 Instagram 应用内浏览器上运行 我的想法是放置一个链接 以便用户可以单击它并重定向到 safari 或默认浏览器中的页面
  • 有没有一种好方法可以让 Map get 和 put 忽略大小写? [复制]

    这个问题在这里已经有答案了 有没有好的方法可以有一个Map
  • 如何使用离线设备捕获地理位置 - cordova

    我正在使用 cordova 开发一个应用程序 并发现需要获取用户的纬度和经度数据 但我的应用程序将离线使用 无需互联网访问 我有两个问题 1 如何检查设备是否启用 GPS 2 如何在没有互联网连接的情况下离线获取纬度和经度 这是可能的 我会
  • 在 React 中设置单选按钮值

    我正在制作一个简单的反应应用程序 其表单具有单选按钮 这里有一个可用的默认数据 例如 const defaultData ContactMode 3 ContactMode 2 ContactMode 2 要求 gt 需要迭代这个defau
  • Tensorflow:“GraphDef 不能大于 2GB。”分配变量后保存模型时出错

    我想用一个预训练的模型来热启动另一个有一点差异的模型 简而言之 我创建一个新模型 并使用预训练的模型权重分配具有相同名称的变量 但是 在保存模型时 出现错误 Traceback most recent call last File tf t