这一次让我头疼了很长一段时间,尽管它看起来很基本。
我将vgg16网络下载为.cpkt (来自https://github.com/tensorflow/models/blob/master/slim/README.md#Pretrained)
现在我要做的是将此网络的第一个卷积层的张量作为R中的数组加载。
我试过
restorer = tf $ train $ Saver()
sess = tf $ Session()
restorer $ restore(sess," /home/beheerder/R/vgg_16.ckpt")
但是我没有看到在我的环境中出现任何变数。
我在R工作,但是Python中的一个awnser也可以,因为我可以把它翻译成R。
答案 0 :(得分:0)
Saver在构造函数中恢复变量。换句话说,您必须先创建变量,然后才能恢复它们。以下是Saver的文档中的示例:
v1 = tf.Variable(..., name='v1')
v2 = tf.Variable(..., name='v2')
# Pass the variables as a dict:
saver = tf.train.Saver({'v1': v1, 'v2': v2})
# Or pass them as a list.
saver = tf.train.Saver([v1, v2])
如果你要在python中运行代码的第一行,你会得到:
In [1]: import tensorflow as tf
In [2]: saver = tf.train.Saver()
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-2-18da33d742f9> in <module>()
----> 1 saver = tf.train.Saver()
/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/saver.pyc in __init__(self, var_list, reshape, sharded, max_to_keep, keep_checkpoint_every_n_hours, name, restore_sequentially, saver_def, builder, defer_build, allow_empty, write_version, pad_step_number)
1054 self._pad_step_number = pad_step_number
1055 if not defer_build:
-> 1056 self.build()
1057 if self.saver_def:
1058 self._check_saver_def()
/usr/local/lib/python2.7/dist-packages/tensorflow/python/training/saver.pyc in build(self)
1075 return
1076 else:
-> 1077 raise ValueError("No variables to save")
1078 self._is_empty = False
1079 self.saver_def = self._builder.build(
ValueError: No variables to save
在从https://github.com/tensorflow/models/blob/master/slim/train_image_classifier.py#L338
开始的20行中恢复之前,您可以看到模型变量的创建方式如果您调用train_image_classifier.py类似于https://github.com/tensorflow/models/blob/master/slim/README.md#fine-tuning-a-model-from-an-existing-checkpoint
中的花示例,则会执行此代码