Как быстро преобразовать возвращаемый массив numpy Python-in-Lua в тензор Lua Torch?

У меня есть функция Python, которая возвращает многомерный массив NumPy. Я хочу вызвать эту функцию Python из Lua и как можно быстрее передать данные в тензор Lua Torch. У меня есть решение, которое работает довольно медленно, и я ищу способ, который значительно быстрее (порядка 10 кадров в секунду или более). Я не уверен, возможно ли это.

Я полагаю, что это будет полезно для других, учитывая растущую популярность поддерживаемого Facebook Torch и обширные простые в использовании инструменты обработки изображений, доступные в Python, которых Lua не хватает.

Я использую вилку Bastibe из lunatic-python для вызова функции Python из Lua. С помощью этого предыдущеговопрос и этодокументацияЯ пришел с кодом, который работает, но слишком медленно. Я использую Lua 5.1 и Python 2.7.6 и могу обновить их при необходимости.

Lua Code: "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)

Код Python: "test_python.py"

import numpy
import os,sys
import Image

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

Ответы на вопрос(1)

Ваш ответ на вопрос