l = parse_dropout(options, params);

29 篇文章 1 订阅
27 篇文章 2 订阅

l = parse_dropout(options, params);函数主体

dropout_layer parse_dropout(list *options, size_params params)
{
    float probability = option_find_float(options, "probability", .5);//保留多少参数
    dropout_layer layer = make_dropout_layer(params.batch, params.inputs, probability);//核心函数
    //配置输出特征图的尺寸,与输入相同
    layer.out_w = params.w;
    layer.out_h = params.h;
    layer.out_c = params.c;
    return layer;
}

dropout_layer layer = make_dropout_layer(params.batch, params.inputs, probability);函数主体

dropout_layer make_dropout_layer(int batch, int inputs, float probability)
{
    dropout_layer l = {0};//定义dropout层并初始化0
    l.type = DROPOUT;//此层的名字
    l.probability = probability;//保留概率
    l.inputs = inputs;//输入
    l.outputs = inputs;//输出,这里与输入相同
    l.batch = batch;//min_batch
    l.rand = calloc(inputs*batch, sizeof(float));//为min_batch特征图分配空间
    l.scale = 1./(1.-probability);
    l.forward = forward_dropout_layer;//令函数指针指向forward_dropout_layer函数入口地址
    l.backward = backward_dropout_layer;;//令函数指针指向backward_dropout_layer函数入口地址
    #ifdef GPU//若定义了GPU则运行下面高效率代码
    l.forward_gpu = forward_dropout_layer_gpu;
    l.backward_gpu = backward_dropout_layer_gpu;
    l.rand_gpu = cuda_make_array(l.rand, inputs*batch);
    #endif
    fprintf(stderr, "dropout       p = %.2f               %4d  ->  %4d\n", probability, inputs, inputs);
    return l;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值