¿Qué significa implementar implemente color_content_masks = deepcopy (color_content_masks) en el código Torch7 a continuación?

if is_pooling then
   for k = 1, #color_codes do
     color_content_masks[k] = image.scale(color_content_masks[k], math.ceil(color_content_masks[k]:size(2)/2), math.ceil(color_content_masks[k]:size(1)/2))
     color_style_masks[k]   = image.scale(color_style_masks[k],   math.ceil(color_style_masks[k]:size(2)/2),   math.ceil(color_style_masks[k]:size(1)/2))
   end
elseif is_conv then
   local sap = nn.SpatialAveragePooling(3,3,1,1,1,1):float()
   for k = 1, #color_codes do
      color_content_masks[k] = sap:forward(color_content_masks[k]:repeatTensor(1,1,1))[1]:clone()
      color_style_masks[k]   = sap:forward(color_style_masks[k]:repeatTensor(1,1,1))[1]:clone()
   end
end  
color_content_masks = deepcopy(color_content_masks)
color_style_masks = deepcopy(color_style_masks)

El código anterior es un proyecto de antorcha sobre la transferencia de estilo de foto profunda. Puedes encontrar el código enhttps://github.com/luanfujun/deep-photo-styletransfer. La funcióndeepcopy() es el siguiente, que es el mismo que se recomienda en el sitio oficial de Lua.

function deepcopy(orig)
    local orig_type = type(orig)
    local copy
    if orig_type == 'table' then
        copy = {}
        for orig_key, orig_value in next, orig, nil do
            copy[deepcopy(orig_key)] = deepcopy(orig_value)
        end
        setmetatable(copy, deepcopy(getmetatable(orig)))
    else -- number, string, boolean, etc
        copy = orig
    end
    return copy
end

Como puedes ver, en elIf declaracióncolor_content_masks ycolor_style_masks es el cambio directamente, entonces, ¿por qué necesitamos implementar una copia profunda?

Respuestas a la pregunta(0)

Su respuesta a la pregunta