本文目录一览:
锥套的介绍
锥套是一种欧美国家普遍使用的新型机械传动联接部件,具有标准化程度高、精度高、结构紧凑、安装拆卸方便等特点。通过8度外锥面与皮带轮、链轮及其他传动件内锥面压紧联接,使各种传动件的定心精度大大提高。锥套尺寸为系列标准设计。其内孔键槽按ISO标准加工。通用性互换性很好,适用各种场合. 当传动件经过长时间运转时,内孔及链槽就可能发生损坏,如果是使用这种锥套的传动件,发生这种情况时,只需更换同一规格锥套就可以恢复使用。因而大大提高传动件使用寿命,降低维修费用,节省时间。
MMsegmentation教程 6: 自定义运行设定
我们已经支持 PyTorch 自带的所有优化器,唯一需要修改的地方是在配置文件里的 optimizer 域里面。
例如,如果您想使用 ADAM (注意如下操作可能会让模型表现下降),可以使用如下修改:
为了修改模型的学习率,使用者仅需要修改配置文件里 optimizer 的 lr 即可。
使用者可以参照 PyTorch 的 API 文档
直接设置参数。
一个自定义的优化器可以按照如下去定义:
假如您想增加一个叫做 MyOptimizer 的优化器,它的参数分别有 a , b , 和 c 。
您需要创建一个叫 mmseg/core/optimizer 的新文件夹。
然后再在文件,即 mmseg/core/optimizer/my_optimizer.py 里面去实现这个新优化器:
为了让上述定义的模块被框架发现,首先这个模块应该被导入到主命名空间 (main namespace) 里。
有两种方式可以实现它。
mmseg.core.optimizer.my_optimizer 模块将会在程序运行的开始被导入,并且 MyOptimizer 类将会自动注册。
需要注意只有包含 MyOptimizer 类的包 (package) 应当被导入。
而 mmseg.core.optimizer.my_optimizer.MyOptimizer 不能 被直接导入。
事实上,使用者完全可以用另一个按这样导入方法的文件夹结构,只要模块的根路径已经被添加到 PYTHONPATH 里面。
之后您可以在配置文件的 optimizer 域里面使用 MyOptimizer
在配置文件里,优化器被定义在 optimizer 域里,如下所示:
为了使用您自己的优化器,这个域可以被改成:
有些模型可能需要在优化器里有一些特别参数的设置,例如 批归一化层 (BatchNorm layers) 的 权重衰减 (weight decay)。
使用者可以通过自定义优化器的构造器去微调这些细粒度参数。
默认的优化器构造器的实现可以参照 这里 ,它也可以被用作新的优化器构造器的模板。
优化器没有实现的一些技巧应该通过优化器构造器 (optimizer constructor) 或者钩子 (hook) 去实现,如设置基于参数的学习率 (parameter-wise learning rates)。我们列出一些常见的设置,它们可以稳定或加速模型的训练。
如果您有更多的设置,欢迎在 PR 和 issue 里面提交。
我们根据默认的训练迭代步数 40k/80k 来设置学习率,这在 MMCV 里叫做 PolyLrUpdaterHook 。
我们也支持许多其他的学习率计划表: 这里 ,例如 CosineAnnealing 和 Poly 计划表。下面是一些例子:
工作流是一个专门定义运行顺序和轮数 (running order and epochs) 的列表 (phase, epochs)。
默认情况下它设置成:
意思是训练是跑 1 个 epoch。有时候使用者可能想检查模型在验证集上的一些指标(如 损失 loss,精确性 accuracy),我们可以这样设置工作流:
于是 1 个 epoch 训练,1 个 epoch 验证将交替运行。
注意 :
如果钩子已经在 MMCV 里被实现,如下所示,您可以直接修改配置文件来使用钩子:
以下的常用的钩子没有被 custom_hooks 注册:
在这些钩子里,只有 logger hook 有 VERY_LOW 优先级,其他的优先级都是 NORMAL 。
上述提及的教程已经包括了如何修改 optimizer_config , momentum_config 和 lr_config 。
这里我们展示我们如何处理 log_config , checkpoint_config 和 evaluation 。
MMCV runner 将使用 checkpoint_config 去初始化 CheckpointHook .
使用者可以设置 max_keep_ckpts 来仅保存一小部分检查点或者通过 save_optimizer 来决定是否保存优化器的状态字典 (state dict of optimizer)。 更多使用参数的细节请参考 这里 。
log_config 包裹了许多日志钩 (logger hooks) 而且能去设置间隔 (intervals)。现在 MMCV 支持 WandbLoggerHook , MlflowLoggerHook 和 TensorboardLoggerHook 。
详细的使用请参照 文档 。
evaluation 的配置文件将被用来初始化 EvalHook 。
除了 interval 键,其他的像 metric 这样的参数将被传递给 dataset.evaluate() 。
用C语言设计一个简单计算器
#includestdio.h
void add(int a,int b,int c)
{
c=a+b;
printf("%d\t",c);
printf("\n");
}
void minus(int a,int b,int c)
{
c=a-b;
printf("%d\t",c);
printf("\n");
}
void multiplication(int a,int b,int c)
{
c=a*b;
printf("%d\t",c);
printf("\n");
}
void div(int a,int b,int c)
{
c=(float)a/(float)b;
printf("%f\t",c);
printf("\n");
}
main()
{
int a,b,c;
char p;
puts("input A:\n");
scanf("%d",a);
puts("input B:\n");
scanf("%d",b);
puts("input operation:\n");
getchar();
p=getchar();
if(p=='+') add(a,b,c);else
if(p=='-') minus(a,b,c);else
if(p=='*') multiplication(a,b,c);else
if(p=='/') div(a,b,c);else
puts("没有注册这个运算符号\n");
}
以上是设计的一个简易计算器。可以进行相应的加减乘除。
简介:
C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。