3
見https://github.com/torch/nn/blob/master/generic/Tanh.c這個C代碼(來自lua庫,Torch)如何編譯/工作?
例如,
static int nn_(Tanh_updateOutput)(lua_State *L)
{
THTensor *input = luaT_checkudata(L, 2, torch_Tensor);
THTensor *output = luaT_getfieldcheckudata(L, 1, "output", torch_Tensor);
THTensor_(resizeAs)(output, input);
if (input->nDimension == 1 || !THTensor_(isContiguous)(input) || !THTensor_(isContiguous)(output))
{
TH_TENSOR_APPLY2(real, output, real, input, \
*output_data = tanh(*input_data););
}
else
{
real* ptr_output = THTensor_(data)(output);
real* ptr_input = THTensor_(data)(input);
long i;
#pragma omp parallel for private(i)
for(i = 0; i < THTensor_(nElement)(input); i++)
ptr_output[i] = tanh(ptr_input[i]);
}
return 1;
}
首先,我不知道如何解釋的第一行:
static int nn_(Tanh_updateOutput)(lua_State *L)
什麼論據嗎? Tanh_updateOutput是指什麼? 「nn_」具有特殊含義嗎?
其次,「TH_TENSOR_APPLY2」和「THTensor _(...)」都被使用,但我沒有看到他們在哪裏定義?這個文件中沒有其他包含?