- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想用一个预训练的模型来热启动另一个稍微有点不同的模型。简单地说,我创建了一个新模型,并为具有相同名称的变量分配预训练模型权重。但是,在保存模型时,出现了错误。
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)
最佳答案
法布里齐奥 correctly points out Protocol Buffer 的大小有 2GB 的硬性限制,但您可能想知道为什么您的程序会达到该限制。问题源于这些行:
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()
张量,这将非常大(据我估计大约 328MB)。
避免这种情况的最佳方法是使用 tf.train.Saver
将先前模型中的变量直接加载到新模型中.由于模型可能具有不同的结构,您可能需要指定从旧模型中的变量名称到新模型中的 tf.Variable
对象的映射。
另一种解决问题的方法是预先创建一个 tf.placeholder()
op 为每个变量赋值。这可能需要对您的实际代码进行更多重组,但以下内容对我有用:
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)
关于python - Tensorflow:分配变量后保存模型时出现 "GraphDef cannot be larger than 2GB."错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42388563/
我有一台 mac,我使用的是 tensorflow 2.0、python 3.7。 我正在按照教程为实时应用程序创建对象检测模型。 但我收到以下错误: “下载/模型/研究/object_detecti
我正在关注其社区版的 databricks 教程: https://docs.databricks.com/applications/deep-learning/deep-learning-pipel
我对使用 Tensorflow 还很陌生。我在这个 repo 中使用 Inception-V3 模型进行图像识别: https://github.com/tensorflow/models/tree/
我有一个使用 Tensorflow 2 和 Keras 定义的大型模型。该模型在 Python 中运行良好。现在,我想将它导入到 C++ 项目中。 在我的 C++ 项目中,我使用 TF_GraphIm
基于此converting-trained-tensorflow-model-to-protobuf,我试图保存/恢复TF图而没有成功。 这是保护程序: with tf.Graph().as_defa
我收到以下错误 - 显然是在保存模型时 Step = 1799 | Tensorflow Accuracy = 1.0 Step = 1799 | My Accuracy = 0.036335
尝试在 PyCharm 2017.3.1 中运行以下内容: with open('../data/UrbanSound8K/retrained_graph.pb', 'rb') as f: g
一些 TensorFlow 保存的模型在输入名称前包含一个 '^'。这些名字有特定的含义吗?它们与常规输入有何不同?例如: node { name: "init" op: "NoOp" i
我对 tensorflow 很陌生。我想了解 Graph 和 GraphDef 之间的概念差异。 此外,我应该运行哪个从 protobuf 文件 (.pb) 加载的图形? 谢谢! 最佳答案 Graph
我目前正在尝试训练模型,并且我的输入管道是按照此答案 here 构建的。我想在每个时期后保存我的模型。但经过一些时期的训练后,训练崩溃了。我读到这是因为它将输入作为常量张量添加到图中。有建议的解决方案
我想用一个预训练的模型来热启动另一个稍微有点不同的模型。简单地说,我创建了一个新模型,并为具有相同名称的变量分配预训练模型权重。但是,在保存模型时,出现了错误。 Traceback (most rec
我正在尝试使用预先训练的网络来提取新数据集的特征,例如 Google 在 tensorflow 中发布的classify_image_graph_def.pb (inception-2015-12-0
我有一个保存的图形定义,它是用 tf.train.import_meta_graph 导入的。该图包含不可序列化的 py_func 操作。我可以在不从头开始构建图形的情况下定义 python 函数并将
来自 SavedModel Docs , SavedModel, the universal serialization format for TensorFlow models. 和 SavedMo
将 1MM+ 行插入 wide and deep learning model抛出 ValueError:GraphDef 不能大于 2GB: Traceback (most recent call
我正在训练模型并保存它,现在我正在尝试加载但无法加载。我在之前的帖子中也看到过,但是一些引用链接不起作用或者我尝试了一些方法,仍然无法解决问题。 代码片段: #load model with tf.i
我正在开发的对象检测应用程序的一部分中使用以下函数 detection_graph = tf.Graph() with detection_graph.as_default(): od_graph
我想在 Android 应用中使用我的 Tensorflow 算法。 Tensorflow Android 示例首先下载包含模型定义和权重(在 *.pb 文件中)的 GraphDef。现在这应该来 s
我正在使用从 Google AutoML Vision 导出的分类模型,因此我只有 saved_model.pb并且没有变量、检查点等。我想将此模型图加载到本地 TensorFlow 安装中,使用它进
我是一名优秀的程序员,十分优秀!