首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >偶尔将值赋值给变量(占位符与feed_dict)

偶尔将值赋值给变量(占位符与feed_dict)
EN

Stack Overflow用户
提问于 2017-04-23 14:44:29
回答 3查看 438关注 0票数 0

我有一个模型,在这个模型中,我需要为权重(可训练变量)分配新的外部值,每N次迭代。

我可以想出几种解决方案:

  1. 保存和恢复 不是很好,因为我需要序列化,通过文件系统调用,等等(即使我使用类似tmpfs之类的东西)
  2. 使用占位符和分配操作 我将创建一个占位符,并为每个可训练变量分配op。每次我想给权重分配什么的时候,我都会执行分配任务。 但是,我理解这意味着我将被迫在每个feed_dict中考虑这些占位符,并在每次运行图形中的任何操作时传递虚拟值。 此外,我将使用更多的内存,而不是必要的。
  3. 对可训练变量使用feed_dict并触发将每个变量分配给自己的操作? 这行得通吗?有什么缺点吗?

在编写代码之前,我觉得问一问是个好主意?建议如何有效地为变量分配新的外部值(内存/时间)?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-24 10:56:38

在最近版本的Tensorflow中,Variable类有load方法。它能做你想做的事。

docs/python/tf/变量#load

票数 1
EN

Stack Overflow用户

发布于 2017-04-23 20:08:45

你的第三选择听起来是最好的选择。

您可以将值提供给不是占位符的张量

TensorFlow的提要机制允许您将数据注入计算图中的任意张量。因此,python计算可以将数据直接输入图形。

任何可喂食的张量都可以喂食。若要检查张量是否可喂食,请使用:tf.Graph.is_feedable(tensor)

票数 3
EN

Stack Overflow用户

发布于 2017-04-23 15:55:10

您可以对占位符使用“分配”操作。

我将被迫在每个feed_dict中考虑这些占位符,并在每次运行图形中的任何操作时传递虚拟值。 此外,我将使用更多的内存,而不是必要的。

不是的。您只需要在运行赋值操作时将值提供给占位符。不要将赋值操作作为培训图的一部分,只在需要分配新值时才运行它们。

如果分配结果是一个瓶颈(对于小N,它可能会减慢您的程序),您可以考虑将数据输入到其他方法中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43572545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档