我正在用TensorFlow进行一些实验,并遇到了障碍.我正在尝试使用TF来评估模型中的变化,然后根据损失函数的结果变化保留或恢复模型.我已经找到了困难的部分(条件控制),但我坚持一些应该相当简单的事情:我似乎无法存储一个tf.trainable_variables迭代,然后在需要时恢复它.
让我们说一个构建一个Op:
...
store_trainable_vars = []
for v in tf.trainable_variables():
store_trainable_vars.append(v)
...
Run Code Online (Sandbox Code Playgroud)
然后,我想恢复tf.trainable_variables到上次运行此操作时的值.我想做的事情如下:
def reject_move():
revert_state = []
for (v, s) in zip(tf.trainable_variables(), store_trainable_vars):
revert_state.append(tf.assign(v, s, name="revert_state"))
return(revert_state)
Run Code Online (Sandbox Code Playgroud)
显然,这将重新评估store_trainable_vars,这反过来又与现在的价值相关联tf.trainable_variables(),从而避免了revert_stateOp.我需要一些方法来存储和检索Tensors的值,而不回调那些Tensors的现值.就像是
...
store_trainable_vars = []
for v in tf.trainable_variables():
store_trainable_vars.append(v.value_right_now())
...
Run Code Online (Sandbox Code Playgroud)
其中v.value_right_now()返回一个在被覆盖之前不会改变的常量.
我知道我可以使用Saver,但是该解决方案会写入磁盘,这对于此应用程序是不可接受的,因为它将在训练循环内运行.
我可能错过了一些明显的东西 - 任何指导都会受到赞赏.
我const char *从处理函数返回,我想将其转换/分配给std::string进一步操作的实例.这似乎应该是直截了当的,但我找不到任何文档说明应该如何完成.显然,我错过了一些东西.见解表示赞赏.