DNNGP、DeepGS 和 DLGWAS模型构成对比
一、DNNGP


DNNGP 是基于深度卷积神经网络,这个结构包括一个输入层,三个卷积层,一个批标准化层,两个dropout层,一个平坦化层,一个 dense层。
dropout层:在神经网络中,dropout层是一个非常有效的正则化技术,主要作用是防止模型过拟合。dropout层在训练时会随机将一些网络单元暂时“屏蔽”,即将其输出值设置为0。各个迭代训练时屏蔽的单元是随机的。这样可以阻止单元间形成强依赖关系,网络被迫更多地考虑不同的特征,而不是依赖少数关键单元的组合。在测试时,dropout层并不发生随机屏蔽,而是保持全连接,但同时缩减所有权重(比如乘以0.5)。这等效于在训练时迭代地训练多个稍微不同的“子网络”,测试时对它们进行平均。综上,dropout在训练时增加噪声,测试时 ensemble,具有很好的正则化效果,可以显著提高模型的泛化能力,防止过拟合。 Dropout比率通常设置在0.2到0.5之间。Ratio太小正则化效果弱,太大会损害模型拟合能力。需针对具体问题进行调参选择合适的比率。Dropout已成为深度学习中标准的正则化技术之一。
Flattern层:在卷积神经网络(CNN)中, Flatten 层的作用是将前一层的多维输出(通常是3D 或 4D 张量)展平成1D 的向量,以便用于接下来的全连接层。其原理很简单:假设前一层输出为一个[batch_size, h, w, c] 的4D 张量,其中:- batch_size:一个批次中的样本数 - h:特征图高度- w:特征图宽度- c: 特征图通道数那么Flatten层会将其展平为[batch_size, h * w * c] 的2D 张量。几何意义上是将多通道的2D特征图打平成1D 向量。这个过程不包含任何可学习参数,仅仅是对数据形状的改变。但意义非常重大:- 将多维输入映射到一维,以适应全连接层的输入。- 在网络金字塔结构中,提高上下层网络信息的融合效果。- 减少参数量,有利于训练较大网络。所以,Flatten层在CNN中起着极其重要的过渡作用,把卷积层提取出的特征映射到适合全连接层处理的形状,是一个不可或缺的组成部分,所以根据其作用其放置的顺序是永远在dense层前的,Flattern层可以把卷积层提取出的特征映射到适合全连接层处理的形状。
dense层:在神经网络中,dense层又称作全连接层(fully connected layer)。它的主要特点是:- 每个输出节点都与上一层的所有节点有连接。- 对输入数据做线性变换+激活函数。- 参数可学习,通过反向传播更新。dense层的计算公式如下:output = activation(dot(input, weights) + bias)其中weights和bias都是可学习的参数。dense层主要用在网络的最后几层,将前面提取到的高级特征映射到最终的输出,实现分类或回归任务。相比卷积层extract低级到高级特征,dense层更强调分类决策。但过多的dense层也容易导致过拟合。所以一个典型的卷积神经网络往往是:卷积层提取特征,全连接层分类决策。这种组合使模型能够同时具备拟合复杂模式和实现决策判别的能力。Dense层作为“大脑”的角色,与前面的“感官”卷积层互相配合,共同完成图像分类等视觉任务。
卷积层在网络中的分布位置会对模型的效果产生一定的影响。1. 前置的卷积层可以提取低级特征,这样后续层可以基于这些特征提取高级特征。2. 网络深处的卷积层可以利用前面提取的特征进行更复杂的特征组合,表达更抽象的高级特征。3. 如果太多卷积层前置,可能导致过拟合和梯度消失。4. 如果太多卷积层在后面,可能无法有效提取低级特征,后面过于依赖前面的结果。5. 残差网络的跳过连接需要确保两边形状一致,所以会影响卷积层的分布。6. 一般将最大池化层插入卷积层之间,用于缩小特征图尺寸。7. 网络后半段可以逐步减小特征图大小,加速计算。所以通常的做法是:- 前半段较多小卷积核提取基础特征
- 中间利用池化层减小特征图
- 后半段卷积核数目增加,融合不同特征
- 残差连接要注意两侧形状需一致需要根据具体问题和网络结构进行调整。适当实验不同分布对效果的影响。
二、DeepGS


DeepGS模型是采用具有 8-32-1 架构的深度学习卷积神经网络架构组成的,这个模型包括一个输入层,一个包括八个神经元的卷积层,一个采样层,三个 dropout 层,两个全连接层和一个输出层。
DeepGS模型使用了以下结构的深度卷积神经网络(CNN):- 输入层:输入原始数据(如图像)。- 卷积层:1个卷积层,包含8个过滤器,用于从输入中提取底层特征。- 采样层:对卷积层输出进行下采样。- Dropout层:3个dropout层用于正则化。- 全连接层:2个全连接层,包含32个和1个神经元。- 输出层:最终输出预测的层。总结一下,该CNN的核心结构是:- 1个输入层
- 1个卷积层(8个过滤器)
- 1个采样层
- 3个dropout层
- 2个全连接层(分别有32个和1个神经元)
- 1个输出层这个8-32-1的整体架构,从原始输入中提取特征,通过dropout正则化,然后将特征展平到全连接层进行预测。这是一个简单有效的CNN架构,充分发挥了卷积层和全连接层的互补优势,同时利用dropout防止过拟合。
卷积层中的过滤器个数(filter数)决定了网络提取特征的能力。过滤器越多,可以学习到更丰富的特征表示。这个模型中的卷积层过滤器数比较少,只有8个,所以它的特征提取能力相对有限。这可能是由于数据量较小的限制。具体来说:
- 输入数据通过每个过滤器进行卷积,获取8个特征图。
- 每个过滤器包含一组可学习的参数,用来提取某种特征。
- 8个过滤器就可以同时提取8种不同的特征。之后,这8个特征图会作为卷积层的输出,传入后续层进行处理。虽然这个卷积层只有8个过滤器,但已足以对输入提取一些底层特征,为后续的分类任务提供有效的特征表示。需要注意避免设置过多的过滤器数,导致过拟合。(在卷积神经网络中,"convolutional layer (eight neurons)" 中的 "neurons" 对应到中文通常翻译成“过滤器”。具体对应关系:- neurons -> 过滤器(filter)- convolutional layer -> 卷积层- eight neurons -> 8个过滤器所以,“one convolutional layer (eight neurons)” 的中文翻译为:“1个卷积层(8个过滤器)”之所以这么翻译,是因为每个过滤器包含一组卷积核,可以看作是一个特征提取器,功能类似于神经元。但考虑到“神经元”通常指全连接层中的节点,为避免混淆,在卷积层中一般将“neurons” 翻译成 “过滤器”。)
采样层:在卷积神经网络中,采样层(Pooling Layer)通常在卷积层之后,其主要功能是降采样,有以下几个作用:1. 减少数据量,降低模型参数,简化计算量。2. 提取主要特征,去除不重要细节。3. 提高特征的空间不变性。常见的采样方式有:- 最大值采样(Max Pooling):取感受野内的最大值作为输出。可以提取主要特征,去除不重要细节。- 平均值采样(Average Pooling):取感受野内平均值作为输出。保留背景信息,避免过度丢失信息。- 随机采样(Stochastic Pooling):随机选取感受野内一个值作为输出。增加模型的随机性和多样性。采样层不改变数据通道数,只降低数据的空间尺寸。这样可大大减少参数量,减轻过拟合,同时保留主要特征信息。所以采样层也被称作下采样层,在CNN中起到补充卷积层的作用,共同构建有效的特征提取器。
最大值采样的主要思想是:1. 将输入特征图分成多个小的感受野(通常是2x2或3x3)。2. 在每个感受野内找出最大激活值。3. 将该最大值作为感受野的输出。这样做可以提取感受野内的主要特征,同时去除细微特征。原因有两个:1. 最大值激活通常对应最明显的特征。2. 去除非最大值可以增加特征的空间移动不变性。举个例子,在图像处理中,最大值池化可以提取出图像的明显边缘特征,而过滤掉细微纹理。所以您的理解是正确的,最大值采样保留主要特征,移除不重要细节,这正是其作用所在。这种下采样方式很好地补充了卷积层的特征提取能力。
采样层在卷积神经网络中是否可有可无,以及为何有的网络中没有采样层,这需要考虑以下几个方面:1. 采样层的功能是降采样,减少计算量和过拟合风险,但同时也会损失细节信息。2. 对小数据集或简单任务,模型参数较少,过拟合风险不大,此时可以不用采样层。3. 一些网络设计加入了大量过滤器,可以通过增加深度来降低每个层的计算,此时也可以不用采样层。例如VGGNet。4. 有的网络使用稀疏连接来减小参数量,此时也可以不用采样层,例如Inception Net。5. 对一些需要保留精细信息的任务,如语义分割,不能使用过多下采样,需要减少或不使用采样层。6. 采样层也可以在中间层使用,而不是每层后面都使用。总之,采样层是否使用以及使用多少,需要根据具体网络结构和任务来权衡计算量、精度需求和过拟合风险。不是所有网络和任务都一定需要采样层,它可以是可有可无的。
感受野(Receptive Field)是一个非常重要的概念,用于描述卷积神经网络中每个神经元的输入范围。具体来说,对于卷积层中的某一个特征图(Feature Map)而言,它的感受野指的是在输入层中,影响到该特征图某一位置值的输入区域。一般来说,卷积层的感受野shape是方形的,边长等于卷积核尺寸。例如,如果卷积核是3x3,那么每个神经元的感受野shape就是3x3。随着网络层数的加深,后层神经元的感受野会逐步扩大,因为它受到前层特征图的影响,所以其感受野等于自身卷积核尺寸与前层感受野大小的结合。感受野大小直接影响网络提取信息的范围和能力。开始层感受野小,只能提取局部信息;深层感受野大,可以提取全局信息。合适的感受野对卷积网络至关重要。一般后期会逐渐扩大感受野,以获取全局特征和上下文信息。这是卷积网络能提取层次特征的重要原理。
三、DLGWAS


该模块包括一个输入层,一个双CNN层,其中包括两个并行CNN分流,和一个汇总层将两个CNN分支流合并。

独热编码方式:输入层包含对基因型进行onehot编码后的输入,表示方式更具体一点是:1. 假设基因型由N个基因位点组成,在每个位点上可能的等位基因形态有M种。2. 则对于每个样本,其基因型可以表示为一个长度为N的向量,向量中的每个元素表示对应的位点上等位基因的类型。3. 对这个长度为N的向量进行onehot编码,就是将其转化为一个N行M列的二维矩阵。其中只有一列对应的元素值为1,其他均为0。4. 这样onehot编码后的矩阵就包含了该样本基因型中各个位点的等位基因信息,即该基因型的完整信息。5. 将这个编码矩阵作为输入层的输入,输入到后续的双CNN层中。输入层对基因型进行了onehot编码,作为模型的输入,以提供完整的基因型信息。这种编码方式很好地把基因型转化为了计算机可处理的输入格式。 
根据以上信息,我们将三种基因型和一个缺失值使用 one-hot 编码方式进行编码并作为输入向量,每个标记被一个四维向量所代替,可以看如上图所示对AA,Aa,aa的编码方式的不同。
这一模块包含输入层、双CNN层和汇总层。输入层包含对基因型进行onehot编码后的输入。双CNN层包含两个并行的CNN分支流。汇总层则将两个CNN分支流合并。输入的编码基因组标记同时传入双CNN层。在双CNN层,我们应用了残差学习的思想。残差学习最初是为图像识别和分类而提出,用于解决梯度消失问题。残差连接是从前一层的快捷连接,被添加到身份映射中形成残差映射。这种方法已被应用于预测蛋白质主链扭转角和蛋白质接触图。总之,关键点有: 一热编码输入基因型数据
- 使用双CNN分支并行提取特征
- 汇总层融合双分支特征
- 在CNN中使用残差结构避免梯度消失
残差结构的作用是让深层网络中的梯度可以直接传递至底层,避免在网络深处造成的梯度消失。具体来说:1. 在CNN的两个连续层之间,添加一个残差块(residual block)。2. 残差块包含一个身份映射(identity mapping),即跳过一个卷积层的直接连接。3. 通过这个直接连接,深层的梯度可以不经变换直接回传到底层。4. 所以中间卷积层的权重更新不会因梯度消失而停止,起到防止梯度消失的作用。5. 这种残差学习结构成功应用于很深的CNN网络,避免了网络深化时的梯度消失问题。6. 在基因序列建模中,当CNN网络较深时,也可以考虑使用残差结构来避免梯度消失。
身份映射(Identity Mapping)指在残差网络(ResNet)中,从前一层到后一层构建的直接连接路径。其主要作用是:1. 在两个连续的卷积层之间,跳过一个卷积层,建立一个直接的恒等映射(F(x) = x)。2. 这样来自后层的梯度可以直接通过这个跳过连接回传到前层。3. 不需要经过中间卷积层的链式法则,从而避免了中间层带来的梯度衰减或累积误差。4. 所以可以稳定地进行很深的网络训练,不会出现梯度消失或爆炸。5. 这个直接路径实现了输入和输出之间的恒等映射,所以称为“身份映射”。6. 整个模块称为残差模块,包含卷积层和身份映射两条路径。综上,身份映射在残差网络中起到非常关键的作用,它保证了深层网络中的梯度可以无障碍地直接回传到浅层,防止梯度消失,是残差网络的核心概念之一。
四、应对梯度消失的解决方法
针对深层神经网络中的梯度消失问题,常见的应对方法包括:
1. 残差网络(ResNet):使用跳过连接,实现梯度直传。这是目前应对梯度消失最有效的结构。
2. 批标准化(BatchNormalization):通过标准化层内激活的分布,减缓梯度消失。
3. 权重初始化技巧:如Xavier初始化,可以保证各层梯度大小相近,延缓消失。
4. 非饱和激活函数:如ReLU,可以确保正区域梯度等于1,不会衰减。
5. 门控递归单元(GRU/LSTM):通过设计记忆单元结构,记录长时依赖信息。
6. 梯度裁剪(Gradient Clipping):裁剪超出阈值的梯度,防止梯度爆炸。
7. 调整优化算法:如使用Adam优化器,可以自适应调整学习率,稳定梯度。
8. 加深网络结构:增加层数而不改参数,稀释每层的变化,缓解消失。
9. 特征标准化:标准化特征分布,可以一定程度抑制消失。综合使用这些方法,可以显著减轻深层神经网络中的梯度消失问题,使其更稳定有效地训练。
相关文章:
DNNGP、DeepGS 和 DLGWAS模型构成对比
一、DNNGP DNNGP 是基于深度卷积神经网络,这个结构包括一个输入层,三个卷积层,一个批标准化层,两个dropout层,一个平坦化层,一个 dense层。 dropout层:在神经网络中,dropout层是一个非常有效的正…...
postgresSQL 配置文件设置
postgres.conf 是 PostgreSQL 数据库的主要配置文件,其中包含了许多关于数据库行为的设置。以下是一些常见的配置项: listen_addresses: 这个参数定义了 PostgreSQL 服务监听的网络地址。默认值是 ‘localhost’,这意味着只有本机的客户端才能…...
【bug】Unity无法创建项目
bug UnityHub无法创建项目 UnityHub无法创建项目 出现的问题:在创建新项目时弹出来一个 无法创建项目 尝试的方法: 刷新许可证 ❌没用退出账号重新登陆 ❌没用重启电脑 ❌没用 最后发现是什么问题呢? 2021.3.3这个版本我之前在资源管理器中…...
跨境外贸业务,选择动态IP还是静态IP?
在跨境业务中,代理IP是一个关键工具。它们提供了匿名的盾牌,有助于克服网络服务器针对数据提取设置的限制。无论你是需要经营管理跨境电商店铺、社交平台广告投放,还是独立站SEO优化,代理IP都可以让你的业务程度更加丝滑ÿ…...
Hlang社区-社区导航栏实现
文章目录 前言项目结构导航实现创作中心移动小球消息提示完整代码前言 okey,这里的话是我们社区导航栏的实现: 废话不多说,看看效果: 我甚至为此用New Bing生成了一个Logo。 项目结构 废话不多说,先来看到我们的项目结构: 在这里导航栏是一个组件。 在App.vue里面直…...
Kestrel和ISS服务器下的配置
一、Kestrel服务器 Kestrel是ASP.NET Core框架中的一个跨平台的Web服务器。它是ASP.NET Core应用程序默认的HTTP服务器,并且可作为独立的Web服务器来托管ASP.NET Core应用程序。 Kestrel具有以下特点和功能 1、跨平台 Kestrel是完全跨平台的,可以在Wind…...
uniapp选择只选择月份demo效果(整理)
<template><view style"margin-top: 200rpx;"><!-- mode"multiSelector" 多列选择器 --><view><picker :range"years" :value"echoVal" change"yearChange" mode"multiSelector">{…...
微信ipad协议8.0.40 加好友功能
友情链接 geweapi.com 点击即可访问! 好友请求验证 小提示: v_3 v_4 可以参考 搜索接口 请求URL: http://域名地址/api/contacts/verifyuser 请求方式: POST 请求头: Content-Type:application/js…...
如何通过本地搭建wamp服务器并实现无公网IP远程访问
文章目录 前言1.Wamp服务器搭建1.1 Wamp下载和安装1.2 Wamp网页测试 2. Cpolar内网穿透的安装和注册2.1 本地网页发布2.2 Cpolar云端设置2.3 Cpolar本地设置 3. 公网访问测试4. 结语 前言 软件技术的发展日新月异,各种能方便我们生活、工作和娱乐的新软件层出不穷&…...
matlab使用教程(19)—曲线拟合与一元方程求根
1.多项式曲线拟合 此示例说明如何使用 polyfit 函数将多项式曲线与一组数据点拟合。您可以按照以下语法,使用 polyfit 求出以最小二乘方式与一组数据拟合的多项式的系数 p polyfit(x,y,n), 其中: • x 和 y 是包含数据点的 x 和 y 坐标的向量 …...
【Go 基础篇】Go语言关键字和预定义标识符解析:探索编程的基石与核心要素
介绍 在计算机编程中,关键字(Keywords)和预定义标识符(Predefined Identifiers)是编程语言的核心要素,它们在语法结构和语言功能中起到重要作用。在Go语言(Golang)中,关…...
微服务与Nacos概述-6
RBAC 模型 RBAC 基于角色的访问控制是实施面向企业安全策略的一种有效的访问控制方式。 基本思想是,对系统操作的各种权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个角色集合。每一种角色对应一组相应的权限。一旦用户被分配了适当…...
不是说嵌入式是风口吗,那为什么工作还那么难找?
最近确实有很多媒体、机构渲染嵌入式可以拿高薪,这在行业内也是事实,但前提是你有足够的竞争力,真的懂嵌入式。 时至今日,能做嵌入式程序开发的人其实相当常见,尤其是随着树莓派、Arduino等开发板的普及,甚…...
【二叉树】114. 二叉树展开为链表
114. 二叉树展开为链表 解题思路 后序遍历思路将root的左子树和右子树展平将root的右子树接到左子树下方 然后将整个左子树作为右子树 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* Tree…...
docker的安装与基础使用
一.docker简介 1)什么是docker Docker是一种用于构建、打包和运行应用程序的开源平台。它基于操作系统级虚拟化技术,可以将应用程序和其依赖的库、环境等资源打包到一个可移植的容器中,形成一个轻量级、独立的可执行单元。 开发者在本地编…...
python+django+mysql高校校园外卖点餐系统--计算机毕设项目
本文的研究目标是以高校校园外卖点餐为对象,使其高校校园外卖点餐为目标,使得高校校园外卖点餐的信息化体系发展水平提高。论文的研究内容包括对个人中心、美食分类管理、用户管理、商家管理、美食信息管理、工作人员管理、安全检查管理、系统管理、订单…...
获取excel中的图片(包含wps中嵌入单元格图片)
项目中有excel导入功能,并且需要导入excel中的图片;模板如图: 已知office中插入的图片为浮动形式;如图: wps中可以插入浮动图片,也可以插入嵌入单元格图片;如图: 并且在wps嵌入单元格形式的图片可以看到使用的是公式;如图: 问题来了,如何获取图片 并且将图片与单元格进行对应 …...
Git命令详解
1 常用命令 1)初始化本地仓库 git init <directory> 是可选的,如果不指定,将使用当前目录。 2)克隆一个远程仓库 git clone <url> 3)添加文件到暂存区 git add <file> 要添加当前目录中的所…...
【STM32RT-Thread零基础入门】 4. 线程介绍(理论)
文章目录 前言一、线程的概念二、线程的调度三、上下文切换四、线程的重要属性1. 线程栈2. 线程的状态3. 线程优先级4. 线程时间片5. 线程的入口函数 五、RT-Thread命令查看系统线程信息总结 前言 前文中的最后一个任务发现,一个main()函数很难同时实现按键功能和闪…...
css学习3(三种样式表与样式控制优先级)
1、外部样式表:当样式需要应用于很多页面时,外部样式表将是理想的选择。在使用外部样式表的情况下,你可以通过改变一个文件来改变整个站点的外观。每个页面使用 <link> 标签链接到样式表,也要放到<head>中。 2、外部…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
