¿Cómo convertir rápidamente una matriz numpy Python-in-Lua devuelta en un Lua Torch Tensor?

Tengo una función de Python que devuelve una matriz numpy multidimensional. Quiero llamar a esta función de Python desde Lua y obtener los datos en un Tensor de antorcha Lua lo más rápido posible. Tengo una solución que funciona bastante lento y estoy buscando una forma que sea significativamente más rápida (orden de 10 fps o más). No estoy seguro si esto es posible.

Creo que esto será de utilidad para otros, teniendo en cuenta la creciente popularidad de Torch respaldado por Facebook y las amplias herramientas de procesamiento de imágenes fáciles de usar disponibles en Python de las que Lua carece.

Estoy usando la bifurcación Bastibe de lunatic-python para llamar a una función Python desde Lua. Con ayuda de este anteriorpregunta y estodocumentación, Se me ocurrió un código que funciona, pero es demasiado lento. Estoy usando Lua 5.1 y Python 2.7.6 y puedo actualizarlos si es necesario.

Código Lua: "test_lua.lua"

require 'torch'

print(package.loadlib("libpython2.7.so", "*"))
require("lua-python")

getImage = python.import "test_python".getImage

pb = python.builtins()

function getImageTensor(pythonImageHandle,width,height)
    imageTensor = torch.Tensor(3,height,width)
    image_0 = python.asindx(pythonImageHandle(height,width))
    for i=0,height-1 do
        image_1 = python.asindx(image_0[i])
        for j=0,width-1 do
            image_2 = python.asindx(image_1[j])
            for k=0,2 do
                -- Tensor indices begin at 1
                -- User python inbuilt to-int function to return integer
                imageTensor[k+1][i+1][j+1] = pb.int(image_2[k])/255
            end
        end
    end
    return imageTensor
end


a = getImageTensor(getImage,600,400)

Código de Python: "test_python.py"

import numpy
import os,sys
import Image

def getImage(width, height):
    return numpy.asarray(Image.open("image.jpg"))

Respuestas a la pregunta(1)

Su respuesta a la pregunta