求助——如何用for命令删掉除了最前,最后的其余文件?

1、观察下图的自动测量圆柱对话框,所选择圆柱的实际测量长度是( C )

2、测量机最佳工作的湿度范围 ( B )

3、下面所述参数设置,哪项不是在 F10中设置的( C )

A.尺寸输出格式 B.安全平面 C.小数点位数 D.移动速度

4、下面所述参数设置,哪项不是在 F5中设置的( A )

A.图形字体 B.负公差显示负号 C.度分秒转换 D.显示绝对速度

5、下列关于 PC-DMIS的快捷键描叙错误的是( D )

D、Ctrl+Tab切换编辑窗口和报告窗口

6、下列快捷键描述正确的是 ( C )

7、下列快捷键描述正确的是( A )

8、下列快捷键描述正确的是( C )

9、如下图所示,如何在圆锥上得到高度为 H的圆( C )

A、打开构造圆 → 选中圆锥 → 套用 B、打开构造圆 → 选中圆锥 → 圆锥 → 直径

C、打开构造圆 → 选中圆锥 → 圆锥 → 高度 D、打开构造圆 → 选中圆锥 → 相交

A、表示星形针的红宝石直径为 2mm

B、表示星形针的单根针长度为 30mm

C、表示星形针 2号针跟 4号针红宝石球心连线的距离为 30mm

D、表示星形针 1号针跟 3号针红宝石球心连线的距离为 30mm

11、测量工件时,必须选择正确的测针。为保证测量的正确性,有必要把程序中调用测针部分高亮度或者反色差标示出来,以起到警示作用,请选择正确的菜单 ( A )

A、编辑— — 参数设置— — 编辑窗口颜色

B、编辑—图形显示窗口—特征外

C、编辑—图形显示窗口—尺寸颜色

D、编辑—参数设置—窗口布局

12、下列说法正确的是( A )

A.使用扫描式测头需要设置测力选项 B.任何测头都不需要设置测力选项

C.一种测头只能设置唯一的测力 D.扫描式测头不能进行触测式测量

13、PC-DMIS对于导入数学模型有两种接口 DCI和 DCT,不需要在电脑上安装造型软件,就可以(B)

14、客户需要使用数学模型进行轮廓分析,要求导入数模的精度,不允许出现转换误差,这种需求,比较适合的接口( A )

15、要得到2圆的内外公切线,构造线类型为(A )

A、偏置 B、中分 C、最佳拟合 D、最佳拟合重新补偿

16、以下关于坐标系的描述,错误的是( C )

A.插入—坐标系—保存,可以建立外部坐标系

B.插入—坐标系—回调,可以调用已存在的外部坐标系

C.测量圆的圆度可以不用建立坐标系

17、PC-DMIS提供保存外部坐标系的命令,以供其它零件程序使用,正确的操作步骤( A )

A、"插入"—"坐标系"—"保存" B、"插入"—"坐标系"—"回调"

C、"插入"—"坐标系"—"新建" D、"插入"—"坐标系"—"拟合"

18、对于圆的位置度的评价使用的计算方法为( A )

A.最小二乘方法 B.最小间隔法 C.最大内接切 D.最小外接

19、测针使用的原则不正确的是( C )

A、测针长度应尽可能短,随测针长度增大,测针的挠曲变形量将增大,影响精度

B、测针连接点最少,为避免引入潜在变形和弯曲点,保证应用的前提下,尽量减少转接或者加长杆的数目

C、测针越长越好,更容易测量特征

D、尽可能的使用大直径的测针,降低测杆干涉的可能性,降低表面精度对测量的影响。

20、圆的计算方法有最小二乘方、最小间隔、最小外切、固定半径四种方式,下面描述错误的是( D )

A、最小二乘方–该计算方法使得所有数据点到圆心的距离的平方和最小;

B、最小间隔 –该计算方法在包含数据点的两个同心圆中间生成一个圆,并使他们的半径保持尽可能的小;

C、最大内切 –该计算方法计算包含在所有数据内部的最大直径的圆。用于测量需要与轴进行装配的孔,得到能与孔装配的轴的最大直径;

D、固定半径 –该计算方法会根据给定的直径创建一个圆。经常用来测量圆的直径。

21、评价小圆弧的圆心位置时采用的计算圆方法为:( B )

A.最小二乘方法 B.固定直径法 C.最大内接切 D.最小外接

22、使用子程序在菜单里的哪个命令( D )

A.统计命令 B.外部命令 C.赋值 D.流程控制命令

23、插入一个注释在菜单里的哪个命令( D )

A.统计命令 B.外部命令 C.赋值 D.报告命令

24、决定配合公差带大小和位置的有( C )

A.标准公差 B.基本偏差 C.配合公差 D.孔轴公差之和

B、现在,PC-DMIS可通过打印—报告窗口打印设置—EXCEL,直接生成 EXCEL报告。

C、现在,PC-DMIS打印 EXCEL报告时可选择生成带,的 CSV格式的报告

D、现在,PC-DMIS打印 EXCEL报告时可以自定义报告中是否显示零件名称、日期时间、序号、修订号等内容。

26、要检查文件是否存在,用哪个命令( C )

A、读取命令 B、定位命令 C、文件是否存在 D、文件对话框

27、法兰孔之间要求互为基准评价位置度,允许孔组对于中心进行旋转,正确的评价方法( B )

A.以测量的第一个孔作为基准,进行评价其余孔的位置度

B.根据所有的法兰孔,最佳拟合(仅旋转)坐标系,然后在坐标系下,评价位置度

C.使用"中间位置度",进行评价

D.需要根据法兰孔,迭代坐标系

28、圆度公差带的形状是( A )

A.两同心圆 B.圆柱 C.两平行平面 D.相互垂直的两组平行平面

29、不同工作条件下,配合间隙应考虑增加的有( B )

A.有冲击负荷 B.配合长度增大 C.经常拆卸

30、封闭环的公差值一定大于任何一个组成环的公差值。( A )

31、游尺分为 50格的公制光标卡,最小可测得( B )

32、验收量规的止规应接近工件的( D )尺寸。

A、最大极限尺寸 B、最小极限尺寸 C、最大实体尺寸 D、最小实体尺寸

33、在三视图中,主视图反映物体的( B )

A、长和宽 B、长和高 C、宽和高

34、三视图中,主视图反映了物体的( A )

A、长和高 B、长和宽 C、高和宽 D、长、宽、高

35、一个完整的尺寸所包含的三个基本要素是( B )

A、尺寸界线、尺寸线和箭头 B、尺寸界线、尺寸线和尺寸数字

C、尺寸界线、尺寸数字和箭头 D、尺寸线、尺寸数字和箭头

36、如图的矢量方向正确的答案是( A )

37、如图的矢量方向正确的答案是( B )

38、如图的矢量方向正确的答案是( C )

39、如图的矢量方向正确的答案是( A )

40、如图的矢量方向正确的答案是( D )

41、下面单位换算不正确的是( A )

42、下面角度换算不正确的是( C )

43、下面单位换算不正确的是( B )

44、下面概念描述不正确的是( B )

A、检测是对于某物品的特定特性与期望特性之间的差异进行比较(例如:尺寸,颜色)

B、计量是对已知量和被测量进行数值比较。

C、计量是用于判断零件尺寸是否超出公差范围,但不会确定偏差的量值。

45、右图安全空间描述不正确的是( D )

A、安全空间为工件提供一个 3D的保护区域,类似一个盒子包裹着整个检测零件,程序在执行测量任一元素时会先运行到相应的安全面上,再进行测量。可通过编辑—参数设置—设置安全空间几步打开。

B、无论有无 CAD数模都可以使用安全空间。

C、使用安全空间可以替代移动点、安全平面的功能,大大节约了编程的时间。

D、安全空间默认的开始跟结束面肯定是正确的,不需要查看是否正确。

46、右图迷你程序描述错误的是( C )

A、在已经编写好的程序中,通过选择部分元素或者尺寸评价进行部分检测的过程,称之为迷你程序,PC-DMIS2014及其以后的版本新增了迷你程序的功能。从"文件 "—"部分执行 "—"迷你程序"

B、尺寸评价完后有尺寸超差项,在迷你程序中选择"超差"点击测量,可以直接对超差项进行复测。复测时,程序会先执行坐标系元素,测量超差元素。

C、任何版本都有迷你程序功能。

D、选择新建迷你程序,建立迷你程序 1.选中"迷你程序 1",在左侧选中要复测的特征,点击">>"按钮,将选中的特征添加到"迷你程序 1"中点击测量可以对"迷你程序 1"中选中的元素实现复测。

47、下面对 pc-dmis中叶片模块描述不正确的是( )

A、PC-DMIS2013之后版本新增叶片标称值编辑器命令,可根据叶片创建标称值文件,标称值文件描述叶片上的截面。

B、PC-DMIS2013之后版本新增叶片报告命令,可根据叶片扫描命令所执行的扫描直接创建报告文件(RPT)。

C、叶片测量完成可通过 PC-DMIS软件对叶片进行分析。

D、PC-DMIS2013之后版本新增叶片扫描功能,可通过设置参数实现对叶片的扫描。

48、对于 MMS测量管理系的功能,以下描述错误的是( D )

A.MMS可对测量任务进行管理,如程序管理、人员管理、设备管理

B.MMS可对测量过程进行监控,如测量报告监控、质量趋势监控、设备状态监控、人员状态监控和质量动态预警

C.MMS可对零件的测量尺寸做专业的统计分析

D.MMS不可以对供应商的产品质量进行控制和管理

49、MMS平台允许企业实时掌控供应商的质检信息和产品质量数据 ,对供应商的质量管理,以下哪项描述不正确( C )

A.对供应商的测量程序中心化管理 B.对供应商的测量报告实时监控

C.不能对供应商的设备状态实时监控 D.对供应商的质量趋势实时监控

50、以下描述中,哪项不是在 MMS测量管理系统中实现的( B )

A.测量设备管理 B.加工设备管理 C.测量程序管理 D测量报告管理

51、以下哪一项不属于,MMS测量管理系统对测量任务的管理( B )

A.测量设备管理 B.测量报告管理 C.测量程序管理 D.测量人员管理

52、对于 MMS测量管理系统,描述错误的是( B )

A.MMS测量系统对于不同工作职能和部门不同,可设置权限管理

B.MMS测量系统不能进行 SPC统计分析

C.MMS测量管理系统能够自动获取产品设计和工艺的检测信息,无缝继承检测要素、公差和基准

D.MMS采用中心化的任务管理模式,所有检测程序与工厂、测量设备和人员精确关联,由系统自动推送检测任务

53、MMS测量管理系统中,测量任务推送的方式是( C )

A.仅手动 B.仅自动 C.手动和自动 D.以上都不是

54、MMS测量管理系统,对于质量分析相关功能描述错误的是( C )

A.可对测量结果进行统计分析 B.可对零件的质量趋势进行分析

C.不能对零件的问题根源进行分析 D.可对零件的历史数据进行分析

55、下面对相对测量说法错误的是( B )

A、"插入"—"参数设置"—"自动相对测量",可添加相对测量命令

B、相对测量的特征只能是点或孔

D、如果仅仅需要相对测量调整特征的方向,在这个情况下,使用"默认(I,J,K,T)模式"即可;如果需要同时对测量元素的方向和位置进行调整,则使用"常规(I,J,K,X,Y,Z)模式"。

56、在日常测量过程中,为了满足工厂报告要求,可能需要自定义一些报告模板,下列含义错误的是 ( D )

57、使用哪种功能,即使工件发生了较大偏差,仍可以根据特征之间的相对位置,实现自动测量(B)

A、阵列 B、相对测量 C、查找孔 D、触测错误

58、下列关于测量机测头的说法不正确的是( D )

A.测量工件前需要先校验测头 B.测头加载测针的重量必须在要求的范围内

C.测头加载测针的长度必须在要求的范围内 D.测头校验目的只是校验红宝石球的直径

59、使用三个圆迭代建立坐标系,以下描述不正确的是( C )

A.三个圆不能同心 B.三个圆不能共线 C.三个圆可以不用样例点 D.必须要有数模或理论值

60、构造点中要得到坐标系原点,构造类型是( C )

61、下列快捷键描述正确的是( B )

A.F1:访问联机帮助;F6:打开"背景颜色设置"对话框

B.F3:标记或取消标记;F6:打开"字体设置"对话框

C.F1:访问联机帮助;F4:打开表达式构造器

D.F3:标记或取消标记;F4:打印图形窗口内容

62、下列快捷键描述正确的是( A )

A.F1:访问联机帮助;F6:打开"字体设置"对话框

B.F4:标记或取消标记;F2:打开表达式构造器

C.F1:访问联机帮助;F10:打开特征编辑对话框

D.F3:标记或取消标记;F4:打印图形窗口内容

63、关于测头校验描述不正确的是( C )

A、由于测头触发有一定的延迟,以及测针会有一定的形变,测量时测头有效直径会小于该测针宝石球的理论直径。所以需要通过校验得到测量时的有效直径,对测量时进行测头补偿

B、测量零件时,接触点的坐标是通过红宝石球中心点坐标加上或减去一个红宝石球的半径得到的,所以必须通过校验得到测量时测针的有效直径

C、由于校验对测量非常重要,所以我们需要每天对测头进行校验,保证测量精度

D、校验测头时,第一个校验的角度是所有测头角度的参考基准。校验测头,实际上就是校验各个角度与第一个校验的角度之间的关系

64、下图描述正确的是( A )

65、下面关于自动圆锥、自动圆柱说法错误的是( A )

A、自动圆锥、自动圆柱参数中的长度必须是正的

B、自动圆柱参数中的矢量方向有两种输入方法

C、自动圆锥、自动圆柱的长度、理论值有两种输入方法

D、自动圆锥的直径可以输入上端圆或下端圆的直径

66、扫描方式不包括( )

A、接触式触发扫描 B、接触式连续式扫描 C、非接触式触发扫描 D、非接触式连续式扫描

67、下列报告是通过那个命令插入的( C )

68、下列说法错误的是( A )

A.必须有数模才能进行自由曲面(FreeForm)扫面

B.评价轮廓度必须有数模或理论值

C.迭代法必须有数模或理论值。

D.有无数模都可以进行开线扫描(LinearOpen)

69、下列关于报告命令-注释,哪个说法是错误的( A )

A.注释内容不能显示在报告中

B.可以通过注释在程序里加入"是或否"的选择功能。

C.可以通过注释在程序里加入输入"操作者"的功能。

D.可以通过注释在程序里加入延时执行程序的功能。

70、工件在测量过程中移动了,选取合适的操作( C )

B.根据基准再建立坐标系,在新的坐标系下,继续测量

C.重新根据基准建立坐标系,使用"坐标系拟和"功能

D.无法操作,重新编辑程序

71、新版本的 PC-dmis测头文件怎样设置才可以在旧版本中打开使用?( C )

A、测头工具栏——编辑 B、测头工具栏——重置测尖

C、测头工具栏——文件格式 D、测头工具栏——重置测尖

72、在一个平面上扫描一个圆环面,需要用哪种扫描方式( C )

A.闭线扫描 B.开线扫描 C.旋转扫描 D.周边扫描

73、如右图所示,要在某一平面上,围绕一个点,扫描一个封闭的圆,使用哪种扫描最合适( B )

A.闭线扫描 B.旋转扫描 C.周边扫描 D.截面扫描

74、下面五方向针说法错误的是( D )

A、五方向测针常用于检测零件内腔,或深孔

B、五方向测针使用时必须接加长杆。

C、五方向测针必须接组件 EXTEN5WAY。

D、五方向测针的五根测针长度必须一样。

75、如何把一个完整的 CAD分为几个层( B )

A、"编辑"—"图形显示窗口"—"CAD元素"

B、"编辑"—"图形显示窗口"—"CAD层"

C、"编辑"—"图形显示窗口"—"CAD装配"

76、请问哪个变量是字符型变量( B )

77、下面不属于变量七种操作数类型的是( D )

A、点 B、函数 C、特征指针 D、特征

78、下面不属于变量七种操作数类型的是( D ):

A、实数 B、数组 C、函数 D、特征

79、下面不属于变量七种操作数类型的是( D ):

A、整数 B、数组 C、特征指针 D、特征

83、1英寸等于多少毫米 :( C )

84、下面对外部命令描述不正确的是( C )

A、若选择 显示 选项,则执行命令时,PC-DMIS将中断程序执行显示一条消息,单击确定继续执行零件程序。

B、通过创建一个批处理文件(外部程序)并用外部命令打开和显示文件。

C、不等待:暂停程序执行,直到外部命令完成

D、选择显示:PC-DMIS将暂停执行,并显示一条消息:执行已暂停,以衍生进程。选择"确定"可继续执行,此时可以对外部命令窗口进行操作,直到您单击显示的消息上的确定,程序将继续执行

85、下面外部命令描述不正确的是( B )

A、用于在零件程序中运行外部的可执行文件或批处理文件。

B、执行外部命令,不需要标记。

C、若选择 显示 选项,则执行命令时,PC-DMIS将中断程序执行显示一条消息,单击确定继续执行零件程序。

D、通过创建一个批处理文件(外部程序)并用外部命令打开和显示文件。

86、下面对外部命令描述不正确的是( D )

A、执行外部命令,需要标记

B、等待:暂停程序执行,直到外部命令完成

C、不等待:继续执行零件程序即使外部命令未完成

D、用于在零件程序中运内部的可执行文件或批处理文件。

C.孔的上、下偏差无法确定 D.孔的基本偏差代号为 R

88、基本偏差决定公差带的位置。( A )

89、零件的尺寸精度越高,通常表面粗糙度参数值相应取得越小。( A )

90、外螺纹的大径用( B )符号表示。

91、下面图用的是( B )表达方法

(A)局部剖视图 (B)局部放大图 (C)局部放大剖视图 (D)局部剖视放大图

92、看懂主、俯视图,想象出组合体的形状,找出不正确的左视图( D )

93、图纸的幅面代号有( B )种。

94、钣金件测量螺纹孔时,一般把自动圆的哪项勾选上( B )

A、螺距 B、触测错误 C、读位置 D、单测

95、下面概念描述不正确的是( D )

A、检测是对于某物品的特定特性与期望特性之间的差异进行比较(例如:尺寸,颜色)

B、测量是对已知量和被测量进行数值比较。

C、计量是用于判断零件尺寸是否超出公差范围,但不会确定偏差的量值。

D、测量是用于判断零件尺寸是否超出公差范围,但不会确定偏差的量值。

96、下面概念描述不正确的是( A )

A、测量是对于某物品的特定特性与期望特性之间的差异进行比较(例如:尺寸,颜色)。

B、测量是对已知量和被测量进行数值比较。

C、计量是用于判断零件尺寸是否超出公差范围,但不会确定偏差的量值。

D、检测是对于某物品的特定特性与期望特性之间的差异进行比较(例如:尺寸,颜色)

97、下面概念描述不正确的是( D )

A、检测是对于某物品的特定特性与期望特性之间的差异进行比较(例如:尺寸,颜色)

B、测量是对已知量和被测量进行数值比较。

C、计量是用于判断零件尺寸是否超出公差范围,但不会确定偏差的量值。

D、检测是对已知量和被测量进行数值比较。

98、右图千分尺读数正确的是(主轴刻度 0.5)( B )

99、右图千分尺读数正确的是(主轴刻度 0.5)( C )

100、下面单位描述不正确的( C )

A、长度的单位是 m B、发光的强度是 mol C、温度是 k D、电流是 A

}

fastNLP 由 、 、 、 、 等子模块组成,你可以查看每个模块的文档。

  • 是实现输入输出的模块,包括了数据集的读取,模型的存取等功能。详见文档

  • 提供用于构建复杂网络模型所需的各种embedding。详见文档

  • 包含了用于搭建神经网络模型的诸多组件,可以帮助用户快速搭建自己所需的网络。详见文档

  • 包含了一些使用 fastNLP 实现的完整网络模型,包括 、 等常见模型。详见文档

返回一个迭代器,迭代器返回两个内容,第一个内容是field_name, 第二个内容是field_value

获取最近输出的batch的index。用于溯源当前batch的数据

计算batch的数量。用于前端显示进度

计算batch的数量。用于前端显示进度

获取最近输出的batch的index。用于溯源当前batch的数据

与DataSetIter类似,但可以用于非fastNLP的数据容器对象,以及可以实现完全自定义的生成batch的方式,然后与Trainer,Tester可以实现

需要保证传入的数据容器实现了实现了以下的方法

除此之外,还可以通过该方法实现OnTheFly的训练,如下面的代码所示

  • __getitem__返回值组成的list,返回值必须为两个dict,其中第一个dict会被认为是input,第二个dict中的内容被认为是target。 需要转换为tensor的数据,需要在collate_fn中转化,但不需要转移到对应device。

获取最近输出的batch的index。用于溯源当前batch的数据

计算batch的数量。用于前端显示进度

用于构建, 存储和使用 strint 的一一映射:

依次增加序列中词在词典中的出现频率

  • no_create_entry (bool) – 如果词语来自于非训练集建议设置为True。在使用fastNLP.TokenEmbedding加载预训练模型时,没有从预训练词表中找到这个词的处理方式。 如果为True,则不会有这个词语创建一个单独的entry,它将一直被指向unk的表示;

增加一个新词在词典中的出现频率

  • no_create_entry (bool) – 如果词语来自于非训练集建议设置为True。在使用fastNLP.TokenEmbedding加载预训练模型时,没有从预训练词表中找到这个词的处理方式。 如果为True,则不会有这个词语创建一个单独的entry,它将一直被指向unk的表示;

增加一个新词在词典中的出现频率

  • no_create_entry (bool) – 如果词语来自于非训练集建议设置为True。在使用fastNLP.TokenEmbedding加载预训练模型时,没有从预训练词表中找到这个词的处理方式。 如果为True,则不会有这个词语创建一个单独的entry,它将一直被指向unk的表示;

依次增加序列中词在词典中的出现频率

  • no_create_entry (bool) – 如果词语来自于非训练集建议设置为True。在使用fastNLP.TokenEmbedding加载预训练模型时,没有从预训练词表中找到这个词的处理方式。 如果为True,则不会有这个词语创建一个单独的entry,它将一直被指向unk的表示;

根据已经出现的词和出现频率构建词典. 注意: 重复构建可能会改变词典的大小, 但已经记录在词典中的词, 不会改变对应的 int

  • elmo与bert)且会finetune的情况。如果仅使用来自于train的数据建立vocabulary,会导致test与dev 中的数据无法充分利用到来自于预训练embedding的信息,所以在建立词表的时候将test与dev考虑进来会使得最终的结果更好。 如果一个词出现在了train中,但是没在预训练模型中,embedding会为它用unk初始化,但它是单独的一个vector,如果 finetune embedding的话,这个词在更新之后可能会有更好的表示; 而如果这个词仅出现在了dev或test中,那么就不能为它们单独建立vector, 而应该让它指向unk这个vector的值。所以只位于no_create_entry_dataset中的token,将首先从预训练的词表中寻找它的表示, 如果找到了,就使用该表示; 如果没有找到,则认为该词的表示应该为unk的表示。

给定一个数字, 将其转为对应的词.

删除Vocabulary中的词表数据。相当于重新初始化一下。

fastNLP的数据容器,详细的使用方法见文档

输出当前field的meta信息, 形似下列的输出:

返回一个list,包含所有 field 的名字

将某个field重新命名.

  • use_1st_ins_infer_dim_type (bool) – 如果为True,将不会check该列是否所有数据都是同样的维度,同样的类型。将直接使用第一 行的数据进行类型和维度推断本列的数据的类型和维度。

  • use_1st_ins_infer_dim_type (bool) – 如果为True,将不会check该列是否所有数据都是同样的维度,同样的类型。将直接使用第一 行的数据进行类型和维度推断本列的数据的类型和维度。

将field设置为忽略类型状态。当某个field被设置了ignore_type, 则在被设置为target或者input时将不进行类型检查, 默认情况下也不进行pad。如果仍需要pad该field,可通过自定义Padder实现,若该field需要转换为tensor,需要在padder 中转换,但不需要在padder中移动到gpu。

里面的元素为被设置为input的field名称

里面的元素为被设置为target的field名称

里面的元素为func的返回值,所以list长度为DataSet的长度

里面的元素为func的返回值,所以list长度为DataSet的长度

读取后的 读取后的DataSet

添加 CollateFn,collate_fn允许在生成的batch的过程中动态生成一些数据(在DataSetIter作为迭代器的情况下有效,默认情况下就是用的 这个)。支持依次添加多个collate_fn, 如果相同的key,后面的collate_fn的结果覆盖前面的collate_fn的结果。

  • gpu中,fastNLP会自动将其移动到特定gpu)。不要修改传入collate_fn中的数据,否则可能导致未知问题。

Trainer在fastNLP中用于组织单任务的训练过程,可以避免用户在不同训练任务中重复撰写
  1. 将数据分成不同的Batch;

  2. 每个epoch结束或一定step后进行验证集验证;

  3. 保存获得更好验证性能的模型等。

  • 对象。当为None时,默认使用

  • sampler – Batch数据生成的顺序, 类型。如果为None,默认使用

  • metrics – 验证的评估函数。可以只使用一个 , 也可以使用多个 ,通过列表传入。 如验证时取得了更好的验证结果(如果有多个Metric,以列表中第一个Metric为准),且save_path不为None, 则保存当前模型。Metric种类详见 。仅在传入dev_data时有效。

  • metric_key (str,None) – 有时会有多个指标, 比如 中包含了’f’, ‘pre’, ‘rec’。此时需 要指定以哪个指标为准。另外有些指标是越小效果越好,比如语言模型的困惑度,这种情况下,在key前面增加一个’-‘来表 明验证时,值越小越好(比如: “-ppl”)。仅在传入dev_data时有效。

  • save_path (str,None) – 将模型保存路径,如果路径不存在,将自动创建文件夹。如果为None,则不保存模型。如果dev_data为None,则保存 最后一次迭代的模型。保存的时候不仅保存了参数,还保存了模型结构。即便使用DataParallel,这里也只保存模型。

  • 将模型load到哪个设备。默认为None,即Trainer不对模型 的计算位置进行管理。支持以下的输入:

    已知可能会出现的问题:Adagrad优化器可能无法正常使用这个参数,请手动管理模型位置。

  • 这个过程理论上不会修改任何参数,只是会检查能否运行。但如果(1)模型中存在将batch_size写为某个固定值的情况; (2)模型中存在累加前向计算次数的,可能会多计算1次。以上情况建议将check_code_level设置为-1。

使用该函数使Trainer开始训练。

该参数只有在初始化提供了dev_data的情况下有效,如果True, trainer将在返回之前重新加载dev表现 最好的模型参数。

返回一个字典类型的数据, 内含以下内容:

以下三个内容只有在提供了dev_data的情况下会有。

Tester是在提供数据,模型以及metric的情况下进行性能测试的类。需要传入模型,数据以及metric进行验证。

  • 将模型load到哪个设备。默认为None,即Trainer不对模型 的计算位置进行管理。支持以下的输入:

    如果模型是通过predict()进行预测的话,那么将不能使用多卡(DataParallel)进行验证,只会使用第一张卡上的模型。

  • verbose (int) – 如果为0不输出任何信息; 如果为1,打印出验证结果。

开始进行验证,并返回验证结果。

分布式的 Trainer,支持分布式训练和混合精度的训练。具体实现原理请阅读 pytorch 官方文档。

Note: 使用分布式 Trainer 时会同时有多个进程执行训练代码。因此将单进程的训练代码改为多进程之前, 请仔细检查,确保训练代码中的同步和互斥操作能正确执行(如模型保持,打印日志等)

  • 对象。当为None时,默认使用

  • metrics – 验证的评估函数。可以只使用一个 , 也可以使用多个 ,通过列表传入。 如验证时取得了更好的验证结果(如果有多个Metric,以列表中第一个Metric为准),且save_path不为None, 则保存当前模型。Metric种类详见 。仅在传入dev_data时有效。

  • metric_key (str,None) – 有时会有多个指标, 比如 中包含了’f’, ‘pre’, ‘rec’。此时需 要指定以哪个指标为准。另外有些指标是越小效果越好,比如语言模型的困惑度,这种情况下,在key前面增加一个’-‘来表 明验证时,值越小越好(比如: “-ppl”)。仅在传入dev_data时有效。

  • save_path (str,None) – 将模型保存路径,如果路径不存在,将自动创建文件夹。如果为None,则不保存模型。如果dev_data为None,则保存 最后一次迭代的模型。保存的时候不仅保存了参数,还保存了模型结构。即便使用DataParallel,这里也只保存模型。

  • forward没用上的参数,否则应该不需要用到该参数。

使用该函数使Trainer开始训练。

返回一个字典类型的数据, 内含以下内容:

以下三个内容只有在提供了dev_data的情况下会有。

查看。 这是Callback的基类,所有的callback必须继承自这个类

该属性可以通过self.trainer获取到,一般情况下不需要使用这个属性。

一共会运行多少个epoch

正在被Trainer训练的模型

Trainer中的模型多少次反向传播才进行一次梯度更新,在Trainer初始化时传入的。

在Train过程开始之前调用。

在每个epoch开始之前调用一次

每次采集到一个batch的数据则调用一次。这里对batch_x或batch_y删除添加内容是可以影响到Trainer中内容的。所以在这一步 可以进行一些负采样之类的操作。batch_x和batch_y中的tensor已经被放置到了模型所在的设备上。

  • 情况下可以帮助定位是哪个Sample导致了错误。仅当num_workers=0时有效。

在计算loss前调用,即这里修改batch_y或predict_y的值是可以影响到loss计算的。

在loss得到之后,但在反向传播之前。可能可以进行loss是否为NaN的检查。

反向梯度传播已完成,但由于update_every的设置,可能并不是每一次调用都有梯度。到这一步,还没有更新参数。

到这里模型的参数已经按照梯度更新。但可能受update_every影响,并不是每次都更新了。

这一步与on_step_end是紧接着的。只是为了对称性加上了这一步。

如果Trainer中设置了验证,则发生验证前会调用该函数

每次执行验证集的evaluation后会调用。

  • 传入的dict是有两层,第一层是metric的名称,第二层是metric的具体指标。

每个epoch结束将会调用该方法

正在被Trainer训练的模型

一共会运行多少个epoch

在loss得到之后,但在反向传播之前。可能可以进行loss是否为NaN的检查。

每次采集到一个batch的数据则调用一次。这里对batch_x或batch_y删除添加内容是可以影响到Trainer中内容的。所以在这一步 可以进行一些负采样之类的操作。batch_x和batch_y中的tensor已经被放置到了模型所在的设备上。

  • 情况下可以帮助定位是哪个Sample导致了错误。仅当num_workers=0时有效。

这一步与on_step_end是紧接着的。只是为了对称性加上了这一步。

在每个epoch开始之前调用一次

每个epoch结束将会调用该方法

在计算loss前调用,即这里修改batch_y或predict_y的值是可以影响到loss计算的。

到这里模型的参数已经按照梯度更新。但可能受update_every影响,并不是每次都更新了。

在Train过程开始之前调用。

如果Trainer中设置了验证,则发生验证前会调用该函数

每次执行验证集的evaluation后会调用。

  • 传入的dict是有两层,第一层是metric的名称,第二层是metric的具体指标。

该属性可以通过self.trainer获取到,一般情况下不需要使用这个属性。

Trainer中的模型多少次反向传播才进行一次梯度更新,在Trainer初始化时传入的。

正在被Trainer训练的模型

一共会运行多少个epoch

在loss得到之后,但在反向传播之前。可能可以进行loss是否为NaN的检查。

反向梯度传播已完成,但由于update_every的设置,可能并不是每一次调用都有梯度。到这一步,还没有更新参数。

每次采集到一个batch的数据则调用一次。这里对batch_x或batch_y删除添加内容是可以影响到Trainer中内容的。所以在这一步 可以进行一些负采样之类的操作。batch_x和batch_y中的tensor已经被放置到了模型所在的设备上。

  • 情况下可以帮助定位是哪个Sample导致了错误。仅当num_workers=0时有效。

这一步与on_step_end是紧接着的。只是为了对称性加上了这一步。

在每个epoch开始之前调用一次

每个epoch结束将会调用该方法

在计算loss前调用,即这里修改batch_y或predict_y的值是可以影响到loss计算的。

到这里模型的参数已经按照梯度更新。但可能受update_every影响,并不是每次都更新了。

在Train过程开始之前调用。

如果Trainer中设置了验证,则发生验证前会调用该函数

该属性可以通过self.trainer获取到,一般情况下不需要使用这个属性。

Trainer中的模型多少次反向传播才进行一次梯度更新,在Trainer初始化时传入的。

并将验证结果写入到fitlog中。这些数据集的结果是根据dev上最好的结果报道的,即如果dev在第3个epoch取得了最佳,则 fitlog中记录的关于这些数据集的结果就是来自第三个epoch的结果。

  • log_loss_every (int) – 多少个step记录一次loss(记录的是这几个batch的loss平均值),如果数据集较大建议将该值设置得 大一些,不然会导致log文件巨大。默认为0, 即不要记录loss。

正在被Trainer训练的模型

一共会运行多少个epoch

反向梯度传播已完成,但由于update_every的设置,可能并不是每一次调用都有梯度。到这一步,还没有更新参数。

每次采集到一个batch的数据则调用一次。这里对batch_x或batch_y删除添加内容是可以影响到Trainer中内容的。所以在这一步 可以进行一些负采样之类的操作。batch_x和batch_y中的tensor已经被放置到了模型所在的设备上。

  • 情况下可以帮助定位是哪个Sample导致了错误。仅当num_workers=0时有效。

这一步与on_step_end是紧接着的。只是为了对称性加上了这一步。

在每个epoch开始之前调用一次

每个epoch结束将会调用该方法

在计算loss前调用,即这里修改batch_y或predict_y的值是可以影响到loss计算的。

到这里模型的参数已经按照梯度更新。但可能受update_every影响,并不是每次都更新了。

如果Trainer中设置了验证,则发生验证前会调用该函数

该属性可以通过self.trainer获取到,一般情况下不需要使用这个属性。

Trainer中的模型多少次反向传播才进行一次梯度更新,在Trainer初始化时传入的。

正在被Trainer训练的模型

一共会运行多少个epoch

在loss得到之后,但在反向传播之前。可能可以进行loss是否为NaN的检查。

反向梯度传播已完成,但由于update_every的设置,可能并不是每一次调用都有梯度。到这一步,还没有更新参数。

每次采集到一个batch的数据则调用一次。这里对batch_x或batch_y删除添加内容是可以影响到Trainer中内容的。所以在这一步 可以进行一些负采样之类的操作。batch_x和batch_y中的tensor已经被放置到了模型所在的设备上。

  • 情况下可以帮助定位是哪个Sample导致了错误。仅当num_workers=0时有效。

这一步与on_step_end是紧接着的。只是为了对称性加上了这一步。

在每个epoch开始之前调用一次

每个epoch结束将会调用该方法

在计算loss前调用,即这里修改batch_y或predict_y的值是可以影响到loss计算的。

到这里模型的参数已经按照梯度更新。但可能受update_every影响,并不是每次都更新了。

如果Trainer中设置了验证,则发生验证前会调用该函数

该属性可以通过self.trainer获取到,一般情况下不需要使用这个属性。

Trainer中的模型多少次反向传播才进行一次梯度更新,在Trainer初始化时传入的。

正在被Trainer训练的模型

一共会运行多少个epoch

在loss得到之后,但在反向传播之前。可能可以进行loss是否为NaN的检查。

反向梯度传播已完成,但由于update_every的设置,可能并不是每一次调用都有梯度。到这一步,还没有更新参数。

每次采集到一个batch的数据则调用一次。这里对batch_x或batch_y删除添加内容是可以影响到Trainer中内容的。所以在这一步 可以进行一些负采样之类的操作。batch_x和batch_y中的tensor已经被放置到了模型所在的设备上。

  • 情况下可以帮助定位是哪个Sample导致了错误。仅当num_workers=0时有效。

这一步与on_step_end是紧接着的。只是为了对称性加上了这一步。

在每个epoch开始之前调用一次

在计算loss前调用,即这里修改batch_y或predict_y的值是可以影响到loss计算的。

到这里模型的参数已经按照梯度更新。但可能受update_every影响,并不是每次都更新了。

在Train过程开始之前调用。

如果Trainer中设置了验证,则发生验证前会调用该函数

每次执行验证集的evaluation后会调用。

  • 传入的dict是有两层,第一层是metric的名称,第二层是metric的具体指标。

该属性可以通过self.trainer获取到,一般情况下不需要使用这个属性。

Trainer中的模型多少次反向传播才进行一次梯度更新,在Trainer初始化时传入的。

正在被Trainer训练的模型

一共会运行多少个epoch

在loss得到之后,但在反向传播之前。可能可以进行loss是否为NaN的检查。

反向梯度传播已完成,但由于update_every的设置,可能并不是每一次调用都有梯度。到这一步,还没有更新参数。

每次采集到一个batch的数据则调用一次。这里对batch_x或batch_y删除添加内容是可以影响到Trainer中内容的。所以在这一步 可以进行一些负采样之类的操作。batch_x和batch_y中的tensor已经被放置到了模型所在的设备上。

  • 情况下可以帮助定位是哪个Sample导致了错误。仅当num_workers=0时有效。

这一步与on_step_end是紧接着的。只是为了对称性加上了这一步。

在每个epoch开始之前调用一次

每个epoch结束将会调用该方法

在计算loss前调用,即这里修改batch_y或predict_y的值是可以影响到loss计算的。

到这里模型的参数已经按照梯度更新。但可能受update_every影响,并不是每次都更新了。

在Train过程开始之前调用。

如果Trainer中设置了验证,则发生验证前会调用该函数

每次执行验证集的evaluation后会调用。

  • 传入的dict是有两层,第一层是metric的名称,第二层是metric的具体指标。

该属性可以通过self.trainer获取到,一般情况下不需要使用这个属性。

Trainer中的模型多少次反向传播才进行一次梯度更新,在Trainer初始化时传入的。

用第一个 epoch 找最佳的学习率,从第二个epoch开始应用它

正在被Trainer训练的模型

一共会运行多少个epoch

反向梯度传播已完成,但由于update_every的设置,可能并不是每一次调用都有梯度。到这一步,还没有更新参数。

每次采集到一个batch的数据则调用一次。这里对batch_x或batch_y删除添加内容是可以影响到Trainer中内容的。所以在这一步 可以进行一些负采样之类的操作。batch_x和batch_y中的tensor已经被放置到了模型所在的设备上。

  • 情况下可以帮助定位是哪个Sample导致了错误。仅当num_workers=0时有效。

在计算loss前调用,即这里修改batch_y或predict_y的值是可以影响到loss计算的。

到这里模型的参数已经按照梯度更新。但可能受update_every影响,并不是每次都更新了。

在Train过程开始之前调用。

如果Trainer中设置了验证,则发生验证前会调用该函数

每次执行验证集的evaluation后会调用。

  • 传入的dict是有两层,第一层是metric的名称,第二层是metric的具体指标。

该属性可以通过self.trainer获取到,一般情况下不需要使用这个属性。

Trainer中的模型多少次反向传播才进行一次梯度更新,在Trainer初始化时传入的。

正在被Trainer训练的模型

一共会运行多少个epoch

反向梯度传播已完成,但由于update_every的设置,可能并不是每一次调用都有梯度。到这一步,还没有更新参数。

这一步与on_step_end是紧接着的。只是为了对称性加上了这一步。

在每个epoch开始之前调用一次

每个epoch结束将会调用该方法

在计算loss前调用,即这里修改batch_y或predict_y的值是可以影响到loss计算的。

到这里模型的参数已经按照梯度更新。但可能受update_every影响,并不是每次都更新了。

如果Trainer中设置了验证,则发生验证前会调用该函数

该属性可以通过self.trainer获取到,一般情况下不需要使用这个属性。

Trainer中的模型多少次反向传播才进行一次梯度更新,在Trainer初始化时传入的。

正在被Trainer训练的模型

一共会运行多少个epoch

在loss得到之后,但在反向传播之前。可能可以进行loss是否为NaN的检查。

每次采集到一个batch的数据则调用一次。这里对batch_x或batch_y删除添加内容是可以影响到Trainer中内容的。所以在这一步 可以进行一些负采样之类的操作。batch_x和batch_y中的tensor已经被放置到了模型所在的设备上。

  • 情况下可以帮助定位是哪个Sample导致了错误。仅当num_workers=0时有效。

这一步与on_step_end是紧接着的。只是为了对称性加上了这一步。

在每个epoch开始之前调用一次

每个epoch结束将会调用该方法

在计算loss前调用,即这里修改batch_y或predict_y的值是可以影响到loss计算的。

到这里模型的参数已经按照梯度更新。但可能受update_every影响,并不是每次都更新了。

如果Trainer中设置了验证,则发生验证前会调用该函数

每次执行验证集的evaluation后会调用。

  • 传入的dict是有两层,第一层是metric的名称,第二层是metric的具体指标。

该属性可以通过self.trainer获取到,一般情况下不需要使用这个属性。

Trainer中的模型多少次反向传播才进行一次梯度更新,在Trainer初始化时传入的。

由于Trainer在训练过程中只会保存最佳的模型, 该callback可实现多种方式的结果存储。 会根据训练开始的时间戳在save_dir下建立文件夹,再在文件夹下存放多个模型:

  • save_dir (str) – 将模型存放在哪个目录下,会在该目录下创建以时间戳命名的目录,并存放模型。如果save_dir不存在将自动创建

正在被Trainer训练的模型

一共会运行多少个epoch

在loss得到之后,但在反向传播之前。可能可以进行loss是否为NaN的检查。

反向梯度传播已完成,但由于update_every的设置,可能并不是每一次调用都有梯度。到这一步,还没有更新参数。

每次采集到一个batch的数据则调用一次。这里对batch_x或batch_y删除添加内容是可以影响到Trainer中内容的。所以在这一步 可以进行一些负采样之类的操作。batch_x和batch_y中的tensor已经被放置到了模型所在的设备上。

  • 情况下可以帮助定位是哪个Sample导致了错误。仅当num_workers=0时有效。

这一步与on_step_end是紧接着的。只是为了对称性加上了这一步。

在每个epoch开始之前调用一次

每个epoch结束将会调用该方法

在计算loss前调用,即这里修改batch_y或predict_y的值是可以影响到loss计算的。

到这里模型的参数已经按照梯度更新。但可能受update_every影响,并不是每次都更新了。

如果Trainer中设置了验证,则发生验证前会调用该函数

该属性可以通过self.trainer获取到,一般情况下不需要使用这个属性。

Trainer中的模型多少次反向传播才进行一次梯度更新,在Trainer初始化时传入的。

1 如果元素类型(元素类型是指field中最里层元素的数据类型, 可以通过FieldArray.dtype查看,比如[‘This’, ‘is’, …]的元素类 型为str, [[1,2], …]的元素类型为int)的数据不为数值类型则不会进行pad

2.4 如果该field的内容等价于三维list,则如果每个instance在每个维度上相等,会组成一个batch的tensor返回,这种情况应该是为图片

3 其它情况不进行处理,返回一个np.array类型。

  • pad_length – int, 如果为0则取一个batch中最大的单词长度作为padding长度。如果为大于0的数,则将所有单词的长度 都pad或截取到该长度.

# 根据你的情况自定义指标 # dev或test时,每个batch结束会调用一次该方法,需要实现如何根据每个batch累加metric
# 如果没有注册该则效果与version1就是一样的 # 根据你的情况自定义指标 # dev或test时,每个batch结束会调用一次该方法,需要实现如何根据每个batch累加metric

self.evaluate将计算一个批次(batch)的评价指标,并累计。 没有返回值 self.get_metric将统计当前的评价指标并返回评价结果, 返回值需要是一个dict, key是指标名称,value是指标的值

evaluate函数将针对一个批次的预测结果做评价指标的累计

get_metric函数将根据evaluate函数累计的评价指标统计量来计算最终的评价结果.

最后得到的metric结果为:

  • 。支持的标签为”B”(没有label);或”B-xxx”(xxx为某种label,比如POS中的NN), 在解码时,会将相同xxx的认为是同一个label,比如[‘B-NN’, ‘E-NN’]会被合并为一个’NN’.

  • 分布计算每个类别的f, precision, recall,然后做平均(各类别f的权重相同)

  • 若为0.5则精确率的权重高于召回率;若为1,则两者平等;若为2,则召回率权重高于精确率。

evaluate函数将针对一个批次的预测结果做评价指标的累计

get_metric函数将根据evaluate函数累计的评价指标统计量来计算最终的评价结果.

最后得到的metric结果为:

  • 默认值为None。若为None则使用数字来作为标签内容,否则使用vocab来作为标签内容。

  • 分布计算每个类别的f, precision, recall,然后做平均(各类别f的权重相同)

  • 若为0.5则精确率的权重高于召回率;若为1,则两者平等;若为2,则召回率权重高于精确率。

evaluate函数将针对一个批次的预测结果做评价指标的累计

get_metric函数将根据evaluate函数累计的评价指标统计量来计算最终的评价结果.

分类问题计算混淆矩阵的Metric(其它的Metric参见 ) 最后返回结果为:

evaluate函数将针对一个批次的预测结果做评价指标的累计

对AdamW的实现,该实现在pytorch 1.2.0版本中已经出现,。 这里加入以适配低版本的pytorch

Sampler 类的基类. 规定以何种顺序取出data中的元素

按照sample的长度进行排序,主要在测试的时候使用,可以加速测试(因为减少了padding)

  • seq_len_field_name (str) – 按哪个field进行排序。如果传入的field是数字,则直接按照该数字大小排序;如果传入的field不是 数字,则使用该field的长度进行排序

尽量保证每个batch的输入token数量是接近的。

提供给用户使用自定义损失函数的类

用户自行定义的损失函数,应当为一个函数。

参数映射表。键为Model/DataSet参数名,值为损失函数参数名。 fastNLP的trainer将在训练时从模型返回值或者训练数据DataSet的target=True的field中 找到相对应的参数名为value的参数,并传入func中作为参数名为key的参数

除了参数映射表以外可以用key word args的方式设置参数映射关系

# 这表示构建了一个损失函数类,由func计算损失函数,其中将从模型返回值或者DataSet的target=True的field # 当中找到一个参数名为`pred`的参数传入func一个参数名为`input`的参数;找到一个参数名为`label`的参数

句子的长度, 长度之外的token不会计算loss。

二维是否等于target的第二维来判断是否需要交换pred的第二维和第三维,因为target的第二维是length的维度,如果这一维度上和pred相等, 那么pred可能第二维也是长度维(存在误判的可能,如果有误判的情况,请显示设置该值)。其它大于0的值则认为该维度是class的维度。

  • seq_len – 句子的长度, 长度之外的token不会计算loss。仅在输出为3d时需要

那么pred可能第二维也是长度维(存在误判的可能,如果有误判的情况,请显示设置该值)。其它大于0的值则认为该维度是class的维度。 :param ignore_idx: ignore的index,在计算loss时将忽略target中标号为ignore_idx的内容, 可以通过该值代替

所有loss的基类。如果需要结合到Trainer之中需要实现get_loss方法

用于计算CMRC2018中文问答任务。

# 一些比较耗时的工作,比如读取数据,预处理数据等,这里用time.sleep()代替耗时 # 输出内容如下,可以看到两次结果相同,且第二次几乎没有花费时间

可以看到第二次运行的时候,只用了0.0001s左右,是由于第二次运行将直接从cache.pkl这个文件读取数据,而不会经过再次预处理:

# 还是以上面的例子为例,如果需要重新生成另一个cache,比如另一个数据集的内容,通过如下的方式调用即可

上面的例子即为使用_cache_fp的情况,这三个参数不会传入到你的函数中,当然你写的函数参数名也不可能包含这三个名称:

# _verbose是用于控制输出信息的,如果为0,则不输出任何内容;如果为1,则会提醒当前步骤是读取的cache还是生成了新的cache
  • _cache_fp (str) – 将返回结果缓存到什么位置;或从什么位置读取缓存。如果为None,cache_results没有任何效用,除非在 函数调用的时候传入_cache_fp这个参数。

}

我要回帖

更多关于 shell删除目录下所有文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信