我有一个模型,需要每隔N次迭代为权重(可训练变量)赋予新的外部值。
我可以想到几种解决方案:
-
保存和恢复
这种方法不好,因为我需要进行序列化,调用文件系统等操作(即使我使用类似于tmpfs的东西)。
-
使用占位符和赋值操作
我会为每个可训练变量创建一个占位符和赋值操作。每当我想为权重赋值时,我就运行这些赋值操作。
然而,我明白这意味着我将被迫在每次运行图中的任何操作时,都必须在每个feed_dict中考虑这些占位符,并传递虚拟值。
此外,我将使用比必要更多的内存…
-
为可训练变量使用feed_dict,并触发将每个变量赋值给自身的操作?
这可行吗?有什么缺点吗?
在开始编码之前,我认为询问一下是个好主意?高效地(在内存和时间上)为变量赋予新的外部值的推荐方法是什么?
回答:
在Tensorflow的最近版本中,Variable
类有一个load
方法。这正是你想要的功能。