1. 内容整体设计与思路拆解
1.1 为什么MaxENT成了生态位建模的“默认选项”
MaxENT,全称Maximum Entropy Species Distribution Modeling,中文常叫“最大熵生态位模型”,这几年在生态学、保护生物学、入侵生物学、病虫害防控甚至流行病学里几乎成了标配工具。你打开任何一本物种分布模型相关的方法学论文,十篇里至少有七八篇用到它。原因不复杂:它只需要物种的“存在点”数据加一组环境变量,就可以模拟物种的潜在适生区,而且在小样本情况下表现相对稳定,操作门槛也比BIOMOD、GAM、BRT那一套低不少。
但门槛低不等于没坑。恰恰是因为上手容易,很多人把数据丢进去、点一下运行、拿一张图就准备投稿,结果审稿人一问“你怎么筛选变量的”“为什么用默认参数”“AUC是怎么算出来的”,就答不上来。这篇博文就是想把这些“答不上来”的问题,从数据准备、参数优化、结果解释到论文写作,完整过一遍。我写的都是自己实际跑过几十个项目后总结出来的流程和教训,不是照着说明书翻译。
1.2 先搞懂MaxENT在“算”什么,才不会用错
上网随便搜,关于MaxENT原理的中文资料很多,但大多数要么太数学,要么一笔带过。我这里用一个尽量直白的理解方式讲:最大熵的思想,本质是在“已知信息有限”的前提下,找一个分布最均匀、不确定性最大的解,同时满足已知条件的约束。翻译成生态学的语境就是:我们不知道物种在每个地方出现的概率到底是多少,但我们可以给模型一些“约束”——比如在已知出现点的环境条件下,环境变量应该落在某个范围里。模型在这些约束下,把预测分布的概率铺得尽可能均匀,这就是“最大熵”的含义。
这个思想的优势在于,它对样本量的要求不像很多判别类模型那么苛刻。比如某些物种标本记录就十几个点,用随机森林这类算法基本没法玩,MaxENT还能给出一个相对合理的预测结果。但代价是,它本质上是一个“相关性”模型,不是“机制”模型。也就是说,模型告诉你哪些环境组合下物种可能出现,但不告诉你“为什么”是这些环境、物种是不是真的受这些因子控制。所以你在论文里讨论结果时,不能把MaxENT的输出说成因果推断,只能说“识别了与分布相关的环境因子”。
另外一个容易被忽略的点是MaxENT依赖Java运行环境。新版MaxENT 3.4.4的图形界面依然要通过maxent.jar来跑,数据格式要求是CSV(物种点)、ASCII(环境变量栅格),输出目录会自动生成一堆文件。很多人第一次运行时卡在环境配置,或者在软件里找不到按钮,这些我在后面“常见报错”部分都会单独拿出来讲。
1.3 完整流程概览:从零到发表,你需要走完哪几步
我自己跑一个完整的MaxENT项目,通常按下面这个流程走,每一步都有对应产出物,方便检查也方便写论文时回溯:
- 明确研究区域与物种:先定清楚你是研究某个特定保护区的适生区,还是全国尺度的潜在分布,这个直接影响后续环境变量的裁剪范围。
- 获取并清洗物种分布点:从GBIF、全球生物多样性信息网络或地方调查数据中获取出现记录,剔除重复点、明显坐标错误点、人工引种/栽培记录等。
- 准备环境变量:从WorldClim、ENVIREM等公共数据库下载气候、地形、土壤数据,统一坐标系、统一分辨率、统一范围,最后转成ASC格式。
- 变量筛选:先跑一遍默认参数看看哪些变量贡献率高,再结合相关性分析剔除冗余变量。这一步是审稿人最爱问的,必须留痕。
- 参数优化:用ENMeval包对特征组合(feature class)和正则化倍率(regularization multiplier)做调优,找到AICc最小的参数组合。
- 正式建模与评估:用优化后的参数重跑模型,设置10次重复交叉验证,输出AUC/OR值、变量贡献率、响应曲线。
- 结果制图与阈值划分:把模型输出的ASCII导入ArcGIS或QGIS,按合理阈值划分为不同适生等级。
- 论文写作与投稿:按生态学期刊的通行规范组织材料方法、结果和图表。
这套流程每一步都有细节,不好好做后面就会连环翻车。接下来从数据准备开始逐个拆解。
2. 数据准备:物种分布点与环境变量的那些坑
2.1 物种分布数据怎么拿、怎么清洗
物种分布点的质量直接决定模型上限。数据源头最常见的是GBIF,免费下载,按物种拉丁名检索就可以拉回来几千甚至几万条记录。但GBIF数据非常“脏”,直接拿来建模基本等于给自己挖坑。我一般拿到数据后按以下顺序清洗:
第一,剔除坐标缺失或坐标越界的记录。比如经纬度超出合理范围、经纬度均为0、坐标落在海里但物种明明是陆生昆虫等,都属于无效记录。这一步用Excel筛选或者R语言里写个小脚本都能做,关键是别偷懒。
第二,去重。同一个物种在同一个采样点可能有多次观测,尤其是鸟类和植物调查中非常常见,如果不做去重,模型就会对重复出现的环境组合过度加权。去重最简单的方法是先用ArcGIS或R把分布点栅格化到与环境变量一致的分辨率网格上,每个栅格内保留一条记录。比如你用2.5弧分的环境数据,每个网格大约在赤道附近是5km左右,那么同一网格内的点可以视为重复。
第三,剔除人工引种、栽培、逃逸个体的记录。这一点在植物和农业昆虫中尤其重要。你要研究的是物种在自然环境下的潜在分布,而不是人类种在哪它就长在哪。如果不清洗栽培点,模型会把农田、城市等非自然适宜生境预测成高适生区,结果完全失真。GBIF里有一个字段叫establishmentMeans(建植方式),可以筛掉“introduced”“cultivated”“managed”等记录。
第四,做空间稀疏化。很多物种标本库的数据存在采样偏差,比如欧洲、北美、中国的东部地区记录密集,而西部地区几乎没有记录。如果不处理采样偏差,模型的预测结果会偏向采样强度高的区域。最常见的做法是用spThin包做空间稀疏化,设定一个最小距离(比如10km),保证任意两个保留点之间的距离不小于这个阈值。
还有一个经常被忽略的细节:坐标系的统一。MaxENT本身不报错,但如果你把CGCS2000的坐标点和WGS84的环境变量放一起,结果会偏得离谱。我习惯在数据清洗阶段就把所有点转成WGS84经纬度,环境变量也从默认的WGS84开始准备,保持全程一致。
2.2 环境变量的选择与裁剪:范围比精度更关键
环境变量方面,绝大多数人默认用WorldClim 2.1的19个生物气候变量,也就是BIO1到BIO19,包括年均温、季节温差、降水季节性等。这套数据的优点是公开免费、空间连续、各类文献可比性强;缺点是很多变量之间高度共线,比如BIO1(年均温)和BIO6(最冷月最低温)、BIO12(年降水)和BIO13(最湿月降水量)经常相关系数超过0.9,全丢进模型会造成多重共线性,影响变量贡献率的解释。
另一个常用数据源是ENVIREM,它提供一些比WorldClim更有生态学解释意义的地形与气候衍生变量,比如潜在蒸散量、干旱度、地形湿度指数等。对于研究干旱区植物、高原物种的时候,这些变量往往比19个生物气候变量更能反映真实限制因子。
下载数据之后,一定要做三件事:统一范围、统一坐标、统一分辨率。范围指裁剪到你的研究区域,比如你研究的是中国西南地区的物种,那就要把全球数据按西南地区边界裁出来。分辨率方面,WorldClim提供30弧秒(约1km)、2.5弧分(约5km)、5弧分(约10km)等版本,我看多数论文用2.5弧分,兼顾精度和计算速度。
裁剪工具我推荐ArcGIS的“Extract by Mask”或者QGIS的“Clip Raster by Mask Layer”,操作都很简单。裁剪后要检查每张栅格的行列数、范围是否完全一致,如果不一致,MaxENT会报错或者说预测结果出现条带。我之前在项目里就吃过这个亏:下载的WorldClim和地形数据范围差了一点点,导致模型跑出来的适生区图边角有一块明显的空值三角形,排查了半天才发现是环境图层范围没对齐。
2.3 变量筛选:不要把所有变量一股脑丢进模型
把19个变量甚至更多变量一股脑丢进MaxENT,虽然模型一般也能跑通,但结果极容易过拟合,而且你没法解释哪个变量到底重要。我自己的筛变量流程分成两步走。
第一步,先跑一遍默认参数的MaxENT,看每个变量在jackknife(刀切法)和贡献率中的表现。直接把那些贡献率接近0、置换重要值(permutation importance)也很低的变量剔掉。第二步,对保留的变量做Pearson相关性分析,对|r|>0.8的变量对,保留其中在生态学上更容易解释、或者贡献率更高的那个。比如BIO1和BIO6高度相关,如果BIO1的贡献率更高,就保留BIO1,剔除BIO6。筛选完,最终进入模型的变量建议控制在6到8个左右,这个数量可以兼顾模型拟合能力和可解释性。
筛选变量的时候,很多人会犯一个错误:只看“贡献率”不看“置换重要值”。MaxENT输出的贡献率是基于训练过程中的路径依赖计算出来的,它受变量输入顺序影响,有时候并不稳定;而置换重要值是模型训练完后重新随机置换该变量后评估精度下降的程度,更加稳健。所以我在论文里汇报时,会优先参考置换重要值。
3. 模型构建与参数优化实操
3.1 默认参数真的够用吗?
MaxENT默认的参数组合是linear、quadratic、hinge等特征全部开启,正则化倍率默认1,这一套参数在标准数据集上表现尚可,但放到你的具体物种上来讲未必最优。原理上说,特征组合决定了模型能拟合多复杂的响应曲线:线性特征只能模拟单调关系,二次特征可以模拟单峰关系,hinge特征可以模拟阈值效应;特征越复杂,模型的拟合能力越强,但也越容易把小样本里的噪声当成真实规律。正则化倍率则控制模型的“平滑程度”,值越大,模型越保守,越不容易过拟合。
如果用默认参数,最常见的问题是小样本物种出现“完美预测”的现象,即训练AUC接近1,但拿到独立验证数据上一塌糊涂。这典型就是过拟合。所以我现在每个正式建模项目都会用ENMeval做参数优化。
3.2 ENMeval参数优化:一步步操作
ENMeval是R语言里的一个包,专门用于MaxENT模型的超参数调优。它的工作逻辑是用不同的特征组合和正则化倍率组合分别建模,然后用一个评价指标挑出最优组合。常用的评价指标有AICc(校正后的赤池信息准则)、AUC、OR值(遗漏率),其中AICc兼顾拟合优度和模型复杂度,是现在生态学期刊里普遍认可的选择。
具体操作流程大致如下。先用R读入物种点文件和环境变量栅格,把环境变量格式转成RasterStack。然后运行ENMeval函数,设置feature类别的候选组合,比如c("L", "LQ", "H", "LQH"),设置正则化倍率向量,比如seq(0.5, 4, by=0.5),再选择分区方法。分区方法我很推荐“block”或“checkerboard2”,因为这两种方法在空间上对数据进行了分组,比随机分区的评估结果更保守也更可靠。用随机分区评估时,邻近的分布点可能同时出现在训练集和验证集里,导致精度被高估。
调优完成后,ENMeval会输出一个结果表格,每行对应一种参数组合,包含delta.AICc、AUC.train、AUC.test、OR.mtp等数值。你选delta.AICc最小的那组参数,就是当前数据下的最优配置。这里要注意,AICc最小的组合偶尔会出现OR值偏高的情况,也就是验证集遗漏率有点高。这时候我会在“AICc最小”和“OR值可接受”之间做一个折中,优先选择OR.mtp低于10%的组合。
优化完参数之后,接下来就是正式的模型运行。你现在有两个选择:一是在MaxENT图形界面里手动填参数;二是用R的dismo包调用maxent.jar传参运行。我个人更推荐后者,因为可以完全记录代码,论文方法部分可以直接引用,审稿人要原始数据处理流程时也方便提供。
dismo包运行MaxENT的代码大致就是先设定参数文件,用“args”参数传入feature组合和正则化倍率,设置randomseed、replicates=10等。跑完后会生成一个包含所有重复运行结果的文件夹。10次重复的目的,是为了评估模型预测的稳定性和变异范围,论文里写mean AUC和AUC的SD才算合格。
3.3 正式建模:重复次数、分区逻辑与阈值规则
正式建模中比较关键的设置有几个:随机种子、重复次数和阈值规则。随机种子要固定,否则同一数据每次跑出来的结果都有细微差别,不利于复现。重复运行次数,我现在在正式项目里固定用10次,交叉验证类型选择“bootstrap”或“subsample”。如果样本量特别少,比如不足20个分布点,我会用jackknife(留一法),虽然计算量大,但对小样本更诚实。
阈值规则也要提前想好。MaxENT的默认输出是连续的概率值,范围0到1,但论文里通常要把这个连续值划分成适生等级,比如高适生、中适生、低适生、非适生。划分依据常用的有“10百分位训练存在阈值”(10 percentile training presence logistic threshold)和“最大敏感度加特异度阈值”(maxSSS)。前者的意思是训练集里90%的存在点对应的最小适合度值被当作阈值,低于它就算非适生;后者是同时最大化敏感度和特异性来找到最佳切分点。我一般两种都算出来,然后取一个合理的值用于制图,并在论文里说明清楚。
3.4 环境变量的贡献率与响应曲线怎么读
模型跑完后,MaxENT目录里会生成maxentResults.csv、物种名.html报告文件、以及每个变量的响应曲线图。需要重点关注三个文件:一个是变量贡献率表,另一个是jackknife结果,还有一个是响应曲线。
贡献率表是大多数论文里都会放的结果,但解释的时候务必小心。贡献率高只能说这个变量对模型拟合的贡献大,不等于这个变量就是物种分布的“决定因素”。要结合响应曲线来判断生态学意义,比如某物种的分布概率随降水增加先升后降,表明它偏好中等降水区间,这样的解释才有生态学意义。如果响应曲线是一片乱跳的锯齿,基本可以判断这个变量被模型过度拟合了,需要重新筛选。
Jackknife结果可以提供变量独立解释力的信息,它分三列:训练增益、测试增益、AUC,分别对应只用该变量建模时的表现。一般我会在论文里放“leave-one-out”的AUC柱状图,直观展示剔除某个变量后AUC下降了多少。
4. 结果制图与论文级图表输出
4.1 从MaxENT输出到ArcGIS制图
MaxENT输出的ASCII文件可以直接拖入ArcGIS,但默认的拉伸方式会让图看起来一片灰蒙蒙,适生区边界也不清晰。我的习惯是先做一次重分类,把连续概率值按选定阈值转换成离散等级。
具体操作是:先在ArcGIS里用“加栅格”或“拉伸”查看数据范围,然后在栅格计算器(Raster Calculator)里写条件表达式。比如用maxSSS阈值0.4,我可以写:
Con("your_asc" < 0.1, 1, Con("your_asc" < 0.3, 2, Con("your_asc" < 0.4, 3, 4)))
这样得到1到4四个等级,分别对应非适生、低适生、中适生、高适生。然后再用“Reclassify”工具生成新的栅格,赋予颜色和标签。ArcGIS里给等级栅格配色时,我常用ColorBrewer的色带,从浅到深用黄绿到深红,保证色盲友好,同时满足期刊对图的色彩要求。
4.2 出图规格与PS/GIS细节
期刊对图的DPI通常要求不低于300,分辨率低了会被直接打回。ArcGIS出图时可以把导出DPI设置为300,QGIS里也一样。如果你需要统计各适生等级的面积占比,那就需要用“栅格转面”工具转成矢量后在属性表里计算面积。
还有一个小技巧,如果你要把多个模型结果(比如当前气候、未来气候)放在同一张图里对比,建议先把所有栅格统一到一个图例范围,否则每张图的颜色分级都不同,读者无法横向比较。ArcGIS里可以通过“符号系统->分类->将分类范围统一”来实现。
论文结果部分的图通常包括:预测适生区空间分布图、受试者工作特征曲线(ROC曲线)、变量贡献率柱状图或刀切图、关键变量的响应曲线图。这些图不要一张张堆在正文里,能合并成大图的就合并,期刊编辑喜欢紧凑的信息表达。
4.3 AUC怎么解释才不会被审稿人怼
AUC是MaxENT最常用的模型评价指标,数值在0到1之间,一般认为0.7到0.8算可以接受,0.8到0.9优秀,0.9以上极高。但AUC高并不代表模型好,因为它同时受预测准确度和预测区域面积比例的影响,预测的适生区面积越大,AUC通常越高。所以现在审稿人越来越倾向于还要看OR值(遗漏率)和AUC差异。
我在论文里一般会给出平均AUC和标准差,同时标明是训练AUC还是测试AUC,并单独提一下OR值。比如可以写“模型重复运行10次的平均AUC为0.892 ± 0.021,10%训练存在阈值的平均遗漏率为0.067”。这样的表述思路清晰,审稿人也很难挑出毛病。
5. 论文写作与发表的关键细节
5.1 Materials and Methods部分怎么写才规范
很多人跑完模型后不知道怎么把方法写成一段既专业又合规的文字。其实生态学期刊对MaxENT方法部分的描述已经形成了较为固定的模式,一般来说要交代以下几点:物种分布数据的来源与清洗方法,环境变量的数据来源、分辨率、筛选过程,模型参数的设置和优化方式(包括特征组合、正则化倍率、分区方法),模型评价指标,以及最终的适生等级划分依据。
我习惯在方法部分加一句话说明自己使用的是“经过ENMeval优化的参数组合(最优组合为LQH,rm=1.5)”,这句话看着简单,却是很多论文忽略的细节。没有参数优化这一步,审稿人大概率会质疑你怎么保证模型没有过拟合。
5.2 结果部分如何组织图表
结果部分一般放一张研究区适生等级分布图、一张ROC曲线图、一张变量贡献率与刀切法要点图、再加一张关键环境变量的响应曲线图。如果做的是未来气候情景预测,还要放一张当前与2050年、2090年适生区变化的对比图,最好用矢量叠加的方式显出增减区域。
在写结果文字时,建议按“模型表现->贡献变量->空间分布格局->未来变化”四步走。先给AUC,再讲哪个变量最重要,适合度如何随变量变化,然后描述适生区集中在哪、高适生区在哪里,最后说明未来气候情景下适生区扩张还是收缩。比如可以写“当前气候情景下高适生区主要集中在西南山地地区,占研究区总面积约12.3%;在SSP585情景下,高适生区预计向东北方向扩展”。这种描述信息量足,读者也容易消化。
5.3 讨论部分与审稿人常问的问题
讨论部分最忌讳“自说自话”,要把模型结果放在生态学过程、历史地理和人类活动背景下解释。审稿人经常问的问题无非这几类:
一是样本量太少。“你的模型只有十几条记录,结果可信吗?”应对思路是强调样本清洗严格,并提到MaxENT对小样本的适用性,同时说明自己用了留一法验证。
二是空间采样偏差。“你的分布点主要来自人口稠密区,模型预测是不是偏向那里?”应对思路是说明自己做了空间稀疏化,并讨论采样偏差的不确定性。
三是变量筛选不够透明。“你为什么不选用其他环境因子?”应对思路是明确写出筛选流程,包括初始变量清单、筛选指标和保留变量,把筛选前后的变量对比表放进补充材料。
四是模型的生态学解释不足。“响应曲线显示偏好高温高湿,但这个物种原本分布在高海拔,怎么解释?”这一问最致命,说明你贴的响应曲线和实际生物学知识矛盾。避免方法是在筛选变量时就要结合物种生物学特性选变量,而不是机械地只看数据相关性。讨论时最好也说明“模型预测的潜在适生区不等同于实际占领区,种间竞争、扩散限制和人为干扰都会导致实际分布范围小于潜在范围”。
5.4 从预印本到投稿:实操层面的碎碎念
模型做完不等于论文写完。我建议先把代码、数据清洗脚本、筛选后的变量图层、模型输出文件都归档好,可以放进一个GitHub仓库里,在论文里放一个链接。现在生态学期刊越来越鼓励数据与代码共享,这也能提高审稿人对文章的好感度。选择目标期刊时,要根据你研究的尺度与生物学问题来定,做本地保护区的可以投应用生态类期刊,做大尺度全球变化影响的可以投生物地理类或全球变化类期刊。第一次投稿前,严格对照期刊的作者指南检查图的分辨率、参考文献格式和字数限制,能避免来回修改的时间损耗。
6. MaxENT常见报错与排查技巧实录
6.1 运行类报错
“maxent模型报错”这几个字在各大生态学交流群里出现过太多次了,我挑几个高频问题统一说。
**错误一:找不到maxent.jar。**很多时候你在R里调用dismo的maxent函数时,系统提示“无法定位maxent.jar文件”,这大概率是因为jar文件没有被下载或路径没有设置。解决办法是手动下载maxent.jar,把它放到指定目录,然后在R里调用参数选项指定jar路径。也有个别情况是R包版本和Java版本不兼容,建议更新到最新版Java 11或17,再看是否正常。
**错误二:提示Java内存不足。**当你的环境变量范围特别大、分辨率特别细的时候,MaxENT会出现内存溢出的报错。解决思路两种:一是在命令行中给Java虚拟内存分配更大的空间,比如通过“-Xmx4g”参数;二是缩小研究区范围或者降低分辨率。如果数据不需要特别细致,我建议优先选择后者,跑得快也省心。
**错误三:模型能跑,但输出的预测图全是一个颜色,或者全是空值。**这通常是环境变量中大量栅格值缺失或范围不对齐导致的。检查一下环境变量的投影、范围和空间分辨率是否完全一致,再用焦点统计或邻域分析查一下是否存在大片NoData区域。
6.2 数据类报错
**错误四:物种点文件格式不对。**MaxENT要求的CSV文件必须包含species(物种名)、longitude(经度)、latitude(纬度)三列,表头必须完全匹配,路径和文件名里不要有中文字符。我第一次用的时候就是因为文件名里带中文,导致软件直接不识别文件。
**错误五:环境变量与物种点坐标系不统一。**这个坑非常隐蔽。比如环境变量是WGS84经纬度,而物种点是从地方志文献里抄来的坐标,实际是GCJ02或CGCS2000坐标系,导入MaxENT后虽然能跑,但预测结果会偏出实际分布区几十甚至上百公里。解决的办法是,在数据清洗流程中统一把环境变量转为WGS84,再用统一的坐标去匹配物种点。
**错误六:样本数量太少导致模型训练失败。**MaxENT在样本点少于5个时基本无法建模。小样本条件下,可以尝试用“留一法”交叉验证,并在结果中明确报告测试AUC,而不是只用训练AUC。
6.3 结果类问题速查表
| 常见现象 | 可能原因 | 检查与解决办法 |
|---|---|---|
| AUC接近1 | 特征过于复杂或样本空间自相关严重 | 用ENMeval调低特征复杂度,增大正则化倍率 |
| 变量贡献率与置换重要值明显矛盾 | 变量间共线性高 | 先做相关性筛选,再进入模型 |
| 适生区图出现条带或错位 | 环境变量范围/分辨率不一致 | 统一所有栅格的范围、像元和坐标 |
| 不同模型重复运行结果波动大 | 样本量不足或数据空间偏差大 | 增加重复次数,使用空间分区,检查数据清洗 |
| 未来气候预测结果异常夸张 | 只用了单一气候模式 | 用多模式集成,避免单模式极端值 |
这张表我给自己的学生和合作者都放过,省去了很多重复解释的时间。你也可以把每一条对应到自己的报错信息上,定位基本就快了。
6.4 我踩过的几个隐蔽坑
除了上面这些能直接搜到答案的报错,还有几个隐藏坑值得提一下。第一,用R跑MaxENT时建议不要在工作目录里放一个名为“maxent”的文件夹,容易和包内部临时文件冲突,导致奇怪权限错误。第二,MaxENT输出的HTML报告中文乱码是正常的,不影响数据文件,不用折腾编码。第三,如果你在Excel里编辑过物种点CSV,保存时它默认加入BOM头,偶尔会导致R读取时第一列表头出问题,建议用Notepad++或VS Code转换成UTF-8无BOM格式。
7. 写在最后的一点个人体会
我从第一次接触MaxENT到现在,跑过药用植物、农林害虫、濒危哺乳动物等不同类群的项目,最大的体会是:这个模型最大的瓶颈不是软件操作,而是生态学理解。你花一天时间调参数、优化数据,换取模型精度提高0.05,可能都不如你花一小时想清楚“这个物种到底受什么环境因素限制”对论文贡献大。模型结果必须放在物种生物学背景里解释才站得住脚,纯粹依赖数据拟合产出的“高AUC”图,在审稿人眼里经不起细看。
最后再分享一个实用习惯:每跑完一批数据,立刻把关键参数、文件路径、筛选过程记到项目笔记里,最好写上日期。做研究项目周期动辄几个月,等你回过来写论文时,如果还要靠翻文件夹去回忆当时的参数设置,那会非常痛苦。这个习惯救过我很多次,也推荐你试试。