这是我目前调用函数的方式:
struct fann *ann = fann_create_standard(
num_layers,
num_in,
optional_num_1,
optional_num_2,
num_out);
上面的函数可以有至少3个参数…所需的参数是num_layers、num_input和num_output)
可选参数是神经网络的隐藏层(它们叫什么并不重要....)但基本上……它可以像这样:
fann_create_standard(#layers,
#input,
#hidden1,
#hidden2,
#hidden3,
#hidden4,
...,
#hiddenN,
#output);
我想要做的是,传入命令行参数来改变多少层,以及每个隐藏层的值是什么(这个函数调用中的中间参数),这样我就不必每次重新配置网络时都重新编译程序。
你不能使用fann_create_standard_array做你想要的吗?数组可以动态创建,而参数列表应该在编译期间指定。
将stdarg.h库文件添加到程序中。
在你的例子中你的函数定义将是:
fann_create_standard(num_layers , num_in , num_out , int count, ... );
然后,您可以使用va_start、va_args、va_end宏和va_list类型访问可选参数以检索可选参数。新的"count"形参保存了传递给该方法的形参的数量,因此:
fann_create_standard(num_layers , num_in , num_out , int count, ... ){
int i;
YOUR_TYPE val;
va_list vl;
va_start(vl,count);
for (i=0;i<count;i++)
{
val = va_arg(vl,YOUR_TYPE);
//val is your optional parameter, do whatever you'd like with it
}
va_end(vl);
}
你要找的是一个可变函数