这个C代码(来自lua库,Torch)如何编译/工作?
发布时间:2020-12-16 09:58:43 所属栏目:百科 来源:网络整理
导读:见 https://github.com/torch/nn/blob/master/generic/Tanh.c 例如, 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); TH
见
https://github.com/torch/nn/blob/master/generic/Tanh.c
例如, 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 _(…)”都被使用,但我看不到它们的定义?此文件中没有其他内容? 解决方法
nn_是一个宏.您可以通过在存储库中搜索“#define nn_”找到该定义;它在
init.c :
#define nn_(NAME) TH_CONCAT_3(nn_,Real,NAME) 您可以继续遵循宏定义链,并且您可能最终得到一些令牌粘贴的东西,使nn_(Tanh_updateOutput)扩展为函数的名称. (通用/ Tanh.c没有任何包含这是奇怪的;通用/ Tanh.c必须包含在其他文件中.对于.c文件来说这是不常见的.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |