在张量流中恢复vgg16网络

时间:2017-06-20 18:58:25

标签: r tensorflow

这一次让我头疼了很长一段时间,尽管它看起来很基本。

我将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。

1 个答案:

答案 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

中的花示例,则会执行此代码