样式转移实现张量流

时间:2017-05-17 15:51:38

标签: python tensorflow deep-learning

Here,我读了一些样式转移的张量流实现。 具体而言,它定义了随后要优化的损失。在一个损失函数中,它说: `

def sum_style_losses(sess, net, style_imgs):
  total_style_loss = 0.
  weights = args.style_imgs_weights
  for img, img_weight in zip(style_imgs, weights):
    sess.run(net['input'].assign(img))
    style_loss = 0.
    for layer, weight in zip(args.style_layers, args.style_layer_weights):
      a = sess.run(net[layer])
      x = net[layer]
      a = tf.convert_to_tensor(a)
      style_loss += style_layer_loss(a, x) * weight
    style_loss /= float(len(args.style_layers))
    total_style_loss += (style_loss * img_weight)

`

使用当前会话调用优化器:

optimizer.minimize(sess)

因此会话已启动并运行,但在运行期间,它会在for循环中调用run。任何人都可以使用张量流逻辑,特别是为什么x包含输入图像的特征向量(而不是样式图像的特征向量)。对我来说,似乎有两个runs并行。

1 个答案:

答案 0 :(得分:0)

github repo的代码如下:

init_op = tf.global_variables_initializer()
sess.run(init_op)
sess.run(net['input'].assign(init_img))
optimizer.minimize(sess)

session计划要在设备上运行的操作并保存一些变量。它可用于在不同(子)图上安排许多操作。所以在会话上面的代码中

  1. 初始化变量。
  2. 将图像指定给符号输入张量。请注意,您也可以use feeds进行此操作。
  3. 尽量减少使用scipy的优化器(已经在其构造函数中丢失了......更多详细信息here)。
  4. 在每个阶段,会话负责安排子图的执行,以允许在该阶段进行的计算。