Neural-Style 输出标志

我正在尝试使用 jcjohnson/neural-style 进行实验。我已经成功地安装和运行了它。但是,我无法让 -output_image 或 -init 标志正常工作。我本能地觉得这是我的一些非常简单的误解。

-output_image 让我特别恼火,因为它只是一个用作文件名的字符串,脚本甚至在使用 -output_image 作为参数的函数中附加了文件格式。我尝试了单引号、双引号和不带引号,以及更改标志的顺序。我的直觉告诉我这是一些非常简单的问题,因为没有人在网上抱怨过这个问题,但我有点不知所措,因为我对 bash、torch 或 lua 都不是特别熟练。

我使用了这个简单的脚本,如果我省略掉这两个麻烦的标志,它就可以很好地工作。

#!/bin/bash

echo "####  Starting Job B  ####"
th neural_style.lua \
-gpu -1 \
-print_iter 1 \
-save_iter 10 \
-num_iterations 3000 \
-style_image a_style.jpg \
-content_image a_content.jpg \
-style_scale 0.15 \
-style_weight 25 \
-content_weight 1e3 \
-output_image a \
-init a_460.png \

以上代码会报错“Invalid argument: ”

如果有帮助的话,在脚本 'neural_style.lua' 中,标志如下定义

cmd:option('-init', 'random', 'random|image')
...
cmd:option('-output_image', 'out.png')

并在以下代码块中使用

  local function maybe_save(t)
    local should_save = params.save_iter > 0 and t % params.save_iter == 0
    should_save = should_save or t == params.num_iterations
    if should_save then
      local disp = deprocess(img:double())
      disp = image.minmax{tensor=disp, min=0, max=1}
      local filename = build_filename(params.output_image, t)
      if t == params.num_iterations then
        filename = params.output_image   -- ## LOOK HERE ##
      end

      -- Maybe perform postprocessing for color-independent style transfer
      if params.original_colors == 1 then
        disp = original_colors(content_image, disp)
      end

      image.save(filename, disp) -- ## LOOK HERE ##
    end
  end

  if params.init == 'random' then
    img = torch.randn(content_image:size()):float():mul(0.001)
  elseif params.init == 'image' then
    img = content_image_caffe:clone():float()
  else
    error('Invalid init type') -- ## NOT THE ERROR THROWN #
  end
  if params.gpu >= 0 then
点赞