调整现有的 Tensorflow 图 (VGG)
Adjust existing Tensorflow Graphs (VGG)
我想使用 Ryan 的 VGG 转换张量流模型。
https://github.com/ry/tensorflow-vgg16
现在我想调整图层并添加另一个图层或更改全连接图层。但我不知道如何从 graphDef
中获取单个 layers/weights 或如何调整图形。
简短回答:您无法调整图表,但可能有一些方法可以实现您想要的结果。
长答案:TensorFlow Graph 对象在结构上是不可变的。您可以修改它们的某些方面(例如,流入节点的张量的形状),但您不能删除节点或在两个现有节点之间添加节点。但是,有几种方法可以获得相同的效果:
如果您的更改仅限于添加仅,那么这样做是没有问题的。例如,如果您想在网络末端添加一层,那就去做吧。同样,您可以 "replace" 最后一层,只需添加一个新层,将倒数第二层作为输入,而忽略现有的最后一层。当你 运行 图形时,如果你从不要求原始最后一层的输出,TensorFlow 将永远不会计算它。
如果您需要进行修改,一种方法是逐个节点慢慢构建图形的副本。因此,请阅读原始图形定义,然后通过迭代原始图形并将相似节点添加到新副本来构建您自己的新图形。这有点乏味并且容易出错。而且...
...您可能根本不需要 "adjust" 该图。如果你想要类似于 VGG-16 实现的东西,你可以直接使用 python code 。不喜欢 fc6 的宽度?只需编辑生成它的代码即可。
不过,这让我们想到了真正的问题。如果您的目标是修改网络 并且 能够重新使用权重,那么 2. 和 3. 将不起作用。实际上,在很多情况下这是不可能的。例如,如果我想在 VGG-16 的中间添加或删除一个层(比如添加另一个卷积层),预训练的权重将不再有效。您可能能够挽救更改上游的任何预训练权重,但下游的所有内容基本上都是错误的。无论如何,您都需要重新训练网络。 (也许你可以使用预训练网络作为初始化,但你仍然需要重新训练。)即使你只是添加到网络(如 1.),你仍然需要训练网络。
谢谢!我重新创建了图表,然后通过获取图表定义的值加载了每个权重。
这是由 graph.get_tensor_by_name('import/...') 完成的,其中 ... 是权重的名称
https://www.tensorflow.org/versions/r0.9/how_tos/tool_developers/index.html
我想使用 Ryan 的 VGG 转换张量流模型。
https://github.com/ry/tensorflow-vgg16
现在我想调整图层并添加另一个图层或更改全连接图层。但我不知道如何从 graphDef
中获取单个 layers/weights 或如何调整图形。
简短回答:您无法调整图表,但可能有一些方法可以实现您想要的结果。
长答案:TensorFlow Graph 对象在结构上是不可变的。您可以修改它们的某些方面(例如,流入节点的张量的形状),但您不能删除节点或在两个现有节点之间添加节点。但是,有几种方法可以获得相同的效果:
如果您的更改仅限于添加仅,那么这样做是没有问题的。例如,如果您想在网络末端添加一层,那就去做吧。同样,您可以 "replace" 最后一层,只需添加一个新层,将倒数第二层作为输入,而忽略现有的最后一层。当你 运行 图形时,如果你从不要求原始最后一层的输出,TensorFlow 将永远不会计算它。
如果您需要进行修改,一种方法是逐个节点慢慢构建图形的副本。因此,请阅读原始图形定义,然后通过迭代原始图形并将相似节点添加到新副本来构建您自己的新图形。这有点乏味并且容易出错。而且...
...您可能根本不需要 "adjust" 该图。如果你想要类似于 VGG-16 实现的东西,你可以直接使用 python code 。不喜欢 fc6 的宽度?只需编辑生成它的代码即可。
不过,这让我们想到了真正的问题。如果您的目标是修改网络 并且 能够重新使用权重,那么 2. 和 3. 将不起作用。实际上,在很多情况下这是不可能的。例如,如果我想在 VGG-16 的中间添加或删除一个层(比如添加另一个卷积层),预训练的权重将不再有效。您可能能够挽救更改上游的任何预训练权重,但下游的所有内容基本上都是错误的。无论如何,您都需要重新训练网络。 (也许你可以使用预训练网络作为初始化,但你仍然需要重新训练。)即使你只是添加到网络(如 1.),你仍然需要训练网络。
谢谢!我重新创建了图表,然后通过获取图表定义的值加载了每个权重。
这是由 graph.get_tensor_by_name('import/...') 完成的,其中 ... 是权重的名称
https://www.tensorflow.org/versions/r0.9/how_tos/tool_developers/index.html