20210825学习总结
一. 吴恩达深度学习第二课第三周
-
一般神经网络的超参数有:学习率alpha,动量梯度下降法的beta,批尺寸mini-batch size,隐藏层神经元个数hidden units,隐藏层数量layers,学习率下降因子learning_rate_decay。 -
深度学习超参数选择采用随机搜索、由粗到细的方式。在搜索时,一般不采取均匀网格的形式,而采取对数间隔的形式(0.1,0.01,0.001…)。 -
选取超参数训练模型时有两种形式:panda(一次只训练一个模型),Caviar(机器充足条件下训练多个模型) -
Batch Normalization:指神经网络每一隐藏层的激活函数作用前,先对输入值Z进行normalization标准化。使用mini-batch梯度下降时,对每个batch单独求均值和标准差,进行标准化。 -
Batch Normalization奏效的原因?batch标准化减少了因输入值改变而影响网络的问题,它使得网络每层都可以自己学习,稍稍独立于其他层。 -
测试时的batch normalization: 模型测试时,不再采取batch normalization分批处理的形式。对于神经网络每一层,在训练时,会进行多个batch的运算,则会得到多个均值和标准差,对这些均值和标准差求加权指数平均,作为测试时的均值和标准差(每一层都会有相对应的均值和标准差)。 -
Softmax激活函数:输入n维向量,则输出n维向量。与hardmax的输出向量中只有一个元素为1相反,softmax输出的是n维向量的概率分布。 -
深度学习框架的选择原则:易用性、运行速度、开源性。
二.CCF CSP202009前两题
今天做的前两题都是模拟题,没有任何算法难度,相比于202012与202104的题,202009的更简单。
- 称监测点查询
#include <iostream>
# include <algorithm>
using namespace std;
const int N = 210;
int n,X,Y;
int x[N],y[N];
struct Dis{
int num;
int value;
}distan[N];
int cmp(Dis a,Dis b){
if (a.value == b.value) return a.num < b.num;
return a.value < b.value;
}
int main(){
scanf("%d%d%d",&n,&X,&Y);
for(int i = 1; i <= n; i++){
scanf("%d%d",&x[i],&y[i]);
distan[i].num = i;
distan[i].value = (x[i] - X)*(x[i] - X) + (y[i] - Y)*(y[i] - Y);
}
sort(distan + 1,distan + 1 + n,cmp);
printf("%d\n%d\n%d",distan[1].num,distan[2].num,distan[3].num);
return 0;
}
- 风险人群筛查
#include <iostream>
# include <algorithm>
using namespace std;
int n,k,t;
int xl,xr,yd,yu;
int amount1 = 0,amount2 = 0;
int flag1 = 0,flag2 = 0;
const int N = 1010;
int x[N],y[N];
int judge_isin(int a,int b){
if(a >= xl && a <= xr && b >= yd && b <= yu)
return 1;
return 0;
}
int main() {
scanf("%d%d%d%d%d%d%d",&n,&k,&t,&xl,&yd,&xr,&yu);
for(int i = 1; i <= n; i++){
for(int j = 1; j <= t; j++){
scanf("%d%d",&x[j],&y[j]);
}
for(int j = 1; j <= t; j++){
if(judge_isin(x[j],y[j])){
flag1 = 1;
flag2++;
if(flag2 >= k) {
amount2++;
break;
}
}
else{
flag2 = 0;
}
}
if(flag1 > 0) amount1++;
flag1 = 0;
flag2 = 0;
}
printf("%d\n%d",amount1,amount2);
return 0;
}
|