如何在TensorFlow中将新图层插入到学习的DNN中?

时间:2018-01-26 18:06:05

标签: python tensorflow deep-learning

我想通过在tensorflow中将conv层插入到学习的DNN来创建一个新网络。

例如,来自

[conv2d_a -> conv2d_b] 

[conv2d_a -> conv2d_c(inserted) -> conv2d_b].

插入图层以外的图层使用学习的权重conv2d_a,并且通过重新学习conv2d_c来学习插入的转化图层的权重。

此代码不起作用:

with tf.Session() as sess:
  saver.restore(sess, "/tmp/model.ckpt")
  conv2d_a = tf.get_default_graph().get_tensor_by_name("conv2d_a")

  # get next layer of conv2d_a (= conv2d_b) 
  tmp_a_next = conv2d_a.next

  # generate new layer connecting to conv2d_a
  conv2d_c = tf.layers.conv2d(inserts=conv2d_a...)

  # change previous layer of conv2d_b from conv2d_a to conv2d_c
  tmp_a_next.prev = conv2d_c

1 个答案:

答案 0 :(得分:0)

您可以创建一个新模型(带有插入的图层或其他添加项)并仅恢复检查点中的变量(您需要自己初始化剩余的变量)。

这是要做到这一点的要点。它将具有相同名称和形状的变量(在检查点和当前图形中)视为相同。

https://gist.github.com/iganichev/d2d8a0b1abc6b15d4a07de83171163d4