ESLint v9正式发布,快来看看都有哪些变化

使用新版ESLint,搭配Prettier使用的配置方式 ESLint重大更新(9.0.0版本)后,将不再支持非扁平化配置文件,并且移除了与Prettier的冲突的规则,也就是说与Prettier搭配使用,不再需要使用插件“eslint-config-prettier”来处理冲突问题。注:使用新版的前提条件是Node.js版本必须是18.18.0、20.9.0,或者是>=21.1.0的版本不然执行命令行参数会报错。 阅读详情

前言

早上醒来,伸个懒腰,真舒服
打开手机,ESLint 竟然发布了 v9 大版本,瞬间来了精神
一般大版本更新都会伴随重大更改甚至是破坏性更改,ESLint 这艘巨轮发展至今已经是前端的标配,一起看看它这次的重大更新能带给我们什么惊喜。

image.png

更新点

不再支持 Node.js < v18.18.0 的版本

截止目前作者书写本文,Node.js 的 LTS 版本为 v20.12.1,最新 Node.js 版本为 v21.7.2
image.png
ESLint v9 与时俱进,放弃了对 Node.js v18.18.0 以下版本的支持。
默默看看自己电脑的 Node.js 版本
image.png
好嘛,还够不上最低版本,是时候升级 Node.js 版本了。
目前目前公司服务器上跑着的大部分都是 v16 版本的 Node.js,想必这波升级还得慎重点。
不过本地玩玩还是可以的!

全新的默认配置文件格式

ESLint v9 采用全新的配置文件:

  • eslint.config.js
  • eslint.config.mjs
  • eslint.config.cjs

并且现在的配置文件默认导出的是一个数组类型的配置对象,不再是以前对象形式的了,
数组的每一项都对应着一组规则,这也就更方便就行规则组合和不同文件的规则区分。
这里需要特别注意,示例如下:

// eslint.config.js
export default [
  {
    rules: {
      semi: "error",
      "prefer-const": "error"
    }
  }
];

并且数组的每一项具有如下几个属性组成:

  • name- 配置对象的名称。这在错误消息和配置检查器中使用,以帮助识别正在使用哪个配置对象。 (命名约定)
  • files- 一组 glob 模式,指示配置对象应应用到的文件。如果未指定,则配置对象适用于与任何其他配置对象匹配的所有文件。
  • ignores- 一组 glob 模式,指示配置对象不应应用于的文件。如果未指定,则配置对象适用于所有与files.
  • languageOptions- 包含与如何配置 JavaScript 进行 linting 相关的设置的对象。
    • ecmaVersion- 支持的 ECMAScript 版本。可以是任何年份(即2022)或版本(即5)。设置"latest"为最新支持的版本。 (默认:“latest”)
    • sourceType- JavaScript 源代码的类型。可能的值"script"适用于传统脚本文件、"module"ECMAScript 模块 (ESM) 和"commonjs"CommonJS 文件。 (默认值:"module"用于.js和.mjs文件;"commonjs"用于.cjs文件)
    • globals- 指定在 linting 期间应添加到全局范围的其他对象的对象。
    • parserparse()- 包含方法或方法的对象parseForESLint()。 (默认:espree)
    • parserOptions- 指定直接传递给解析器上的parse()or方法的附加选项的对象。parseForESLint()可用选项取决于解析器。
  • linterOptions- 包含与 linting 过程相关的设置的对象。
    • noInlineConfig- 指示是否允许内联配置的布尔值。
    • reportUnusedDisableDirectives- 严重性字符串,指示是否以及如何应跟踪和报告未使用的禁用和启用指令。对于旧版兼容性,true相当于"warn"和false相当于"off". (默认:“warn”)。
  • processorpreprocess()- 包含方法的对象postprocess()或指示插件内部处理器名称的字符串(即"pluginName/processorName")。
  • plugins- 包含插件名称到插件对象的名称-值映射的对象。当files指定时,这些插件仅适用于匹配的文件。
  • rules- 包含配置规则的对象。当指定files或ignores时,这些规则配置仅适用于匹配的文件。
  • settings- 包含应可用于所有规则的名称-值对信息的对象。

简单总结下变化点:
以前使用 extends来组合规则,现在使用数组的每一项来组合,所以 ESLint 官方才新出品了 @eslint/js包来导出 ESLint 默认规则。
而且,这会导致以前的 eslint的其他社区规范文件需要发布适用于 v9 版本的新规则。不过好在 ESLint 官方已经想到了这个问题,他们提供了一个 @eslint/eslintrc包,用于将现有的插件和预设转换为符合新版本规范的代码。示例如下:

import { FlatCompat } from "@eslint/eslintrc";
import path from "path";
import { fileURLToPath } from "url";

// mimic CommonJS variables -- not needed if using CommonJS
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

const compat = new FlatCompat({
    baseDirectory: __dirname
});

export default [
    // mimic ESLintRC-style extends
    ...compat.extends("standard", "example"),

    // mimic environments
    ...compat.env({
        es2020: true,
        node: true
    }),

    // mimic plugins
    ...compat.plugins("airbnb", "react"),

    // translate an entire config
    ...compat.config({
        plugins: ["airbnb", "react"],
        extends: "standard",
        env: {
            es2020: true,
            node: true
        },
        rules: {
            semi: "error"
        }
    })
];

这将使我们很平滑额过渡到 v9 版本。

移除格式化代码相关的程序

在旧版本的 ESLint 中,可以使用它作代码风格约束,例如:尾随逗号,空格,空行等
这些规则可以让我们的代码风格一致,但是这些规则却与 ESLint 的核心功能有点相悖
因为 ESLint 主要的点是分析代码的语法错误而不应该是风格错误,所以风格检查有点画蛇添足了,况且现在有更加快速且强大的 prettier来做代码风格约束,所以 ESLint 的风格约束是时候放弃了。

删除格式化程序替换 npm 包
checkstyleeslint-formatter-checkstyle
compacteslint-formatter-compact
jslint-xmleslint-formatter-jslint-xml
juniteslint-formatter-junit
tapeslint-formatter-tap
unixeslint-formatter-unix
visualstudioeslint-formatter-visualstudio

以上原本内置于 ESLint 内部的格式化程序将全部被删除,取而代之的是后面的 npm 包,
如果你仍然需要使用 ESLint 的风格格式化,则需要自己安装对应的包,启用对应的规则。
不过,prettier可能是一个更好的选择。

其他更新点

因为这些更新点涉及面比较狭窄,这里不做过多阐述,感兴趣的可以自行查看。

总结

本文主要向大家展示了 ESLint v9 版本的更新点,希望本文可以帮助你更好的迁移到 ESLint v9。

利用 @eslint/eslintrc 实现 ESLint9的适配 通过以上对实际 ESLint 配置代码的解析,我们深入理解了如何利用 @eslint/eslintrc 插件来实现高效、灵活且可维护的代码规范管理。在现代前端开发中,随着项目复杂度的不断提高和团队协作的日益紧密,合理地运用这样的配置方式对于保证代码质量和团队效率具有重要意义。未来,随着 ESLint 生态系统的不断发展和完善,@eslint/eslintrc 插件也将持续进化,为开发者提供更加强大和便捷的配置管理功能,助力前端代码质量的提升。 阅读详情

相关推荐

ESLint入门 安装 使用 详解

首先,ESLint是什么东西呐,看官网的介绍: ESLint 是在 ECMAScript/JavaScript 代码中识别和报告模式匹配的工具,它的目标是保证代码的一致性和避免错误。在许多方面,它和 JSLint、JSHint 相似。 ESLint 是完全插件化的。每一个规则都是一个插件并且你可以在运行时添加更多的规则。 通俗点讲就是ESLint其实就是一个代码格式化检测工具,它规定你.........

lwx931449660的博客 1万+

【最佳实践】Eslint 配置、使用技巧、代码检查的过程、肝这一篇就够了!

🔥如果此文对你有帮助的话,欢迎💗关注、👍、⭐、✍️评论,支持一下博主~

一起寻找DX3906-探索未知 7435

本地工具链一键集成:Claude Code 对接 ESLint、Prettier 与 Git hooks 全链路

文章摘要 本文探讨如何通过规则注入和自动化流水线解决AI生成代码的规范性问题。作者指出Claude Code生成的代码ESLint通过率仅60%,并提出三层架构方案:1) 用CLAUDE.md文件将lint规则转化为AI可理解的指令;2) 利用Hooks在代码写入后自动执行lint/format;3) 通过Git钩子设置代码质量门禁。实测表明,该方法可将规范率提升至95%。文章还分析了2026年相关工具链的最新发展,包括Claude Code的自愈功能、ESLint v10的重大变更等,为开发者提供了从AI

ZXSXJ的博客 118

如何使用ESLint?这是80%最常用的功能

ESLint 是一个可配置的 JavaScript linter。它可以帮助开发者查找并修复 JavaScript 代码中的问题。通过这篇文章你可以掌握 ESLint 的基本使用、规则配置、规则禁用、文件忽略、工具集成,了解预定义全局变量和插件。

沐爸的博客 3503

Keil 5安装教程(C51与MDK共存)

目录前言MDK的安装C51的安装安装完成后的验证新建C51工程添加C51程序文件编译测试总结 前言 本篇文章将介绍嵌入式开发工具Keil 5的安装方法,并使MDK(Microcontroller Development Kit,开发stm32时会用到)和C51(51单片机C语言软件开发系统)共存。今后使用Keil 5可同时开发51单片机程序和ARM单片机程序,便于学习与从51到32的过渡。 注: 为防止商业纠纷,本篇文章不涉及文中软件的注册破解,请支持正版。 同时为了便于今后更深入的学习,本文不会介绍软件的

xushu_me的博客 6万+

微生物组β-多样性——PCoA分析及可视化

让你的数据映入眼帘

qq_47369980的博客 1万+

你还在用旧版本的 ESLint 吗?快来看看最新版

ESLint 社区在 4 月 5 日迎来了一个里程碑式的更新,正式发布了 v9.0.0 版本。这一版本包含了许多重要的变化和改进,为 JavaScript 代码的静态分析带来了新的功能和更强的灵活性。以下是此次更新的主要内容:安装升级现有的 ESLint 用户可以通过以下命令将 ESLint 升级到最新版本:npmieslint@9.0.0--save-dev迁移指南由于此次更新涉及大量更改...

我本可以容忍阳光,如果我不曾见过太阳,然而阳光已使我荒凉,成为更新的荒凉。 2163

数据库实验报告--MySQL

数据库完整版报告--MySQL 包括数据库创建、表的创建、视图以及授权和触发器的创建等内容,全是精华!看完点赞加收藏O(∩_∩)O~。

Mortalz7 4918

ESLint Stylistic 与 ESLint 9 兼容性:新时代代码风格检查方案

ESLint 9 的发布标志着代码检查工具的一次重要升级,而 ESLint Stylistic 作为专注于代码风格的插件,为开发者提供了与 ESLint 9 完美兼容的解决方案。本文将详细介绍如何无缝迁移到 ESLint 9 环境,以及 ESLint Stylistic 带来的全新代码风格检查体验。 ## 为什么需要关注 ESLint 9 兼容性? ESLint 在 v8.53.0 版本中正式

gitblog_00348的博客 342

模型性能评估之 Friedman 检验与 Nemenyi 后续检验

前言 当我们提出一种算法,需要知道我们的算法和现在已有的算法相比,性能是否更优的时候,就需要用到模型性能评估的方法。本篇博客介绍一种模型性能评估的方法:Friedman 检验与 Nemenyi 后续检验。 该方法的特点是:可以进行多个算法的比较。下面看看具体的使用: 具体使用 1. 计算序值 假定我们用 D1D_1D1​、D2D_2D2​ 、D3D_3D3​ 和 D4D_4D4​ 四个数据集对算法 AAA、BBB、CCC 进行比较。首先需要得到每个算法在每个数据集上的测试结果,可以是准确率,也可以是均方误差

蕾欧娜与26的博客 1万+

浮栅晶体管原理深度解析:热电子注入与FN隧穿如何实现1/0存储

本文深入解析了浮栅晶体管的工作原理,重点探讨了热电子注入与FN隧穿机制如何实现1/0存储。作为现代闪存芯片的核心技术,浮栅晶体管通过独特的结构设计实现非易失性存储,文章详细分析了其编程与擦除的物理过程,并对比了两种机制的优缺点,为闪存性能优化提供了理论基础。

weixin_30363285的博客 362

React Native 0.84 重磅发布!Hermes V1 成为默认引擎,构建速度大幅提升

React Native 团队刚刚发布了,这是新年后的首个重大更新,带来了多项激动人心的改进。本文将为你详细解读这次更新的核心亮点,以及升级时需要注意的事项。

wayne214的博客 462

GEO的工作原理,以及GEO会催生出更多的爬虫岗位吗?

摘要: GEO(生成式引擎优化)是提升内容在AI搜索(如ChatGPT、Perplexity等)中引用率的新策略,核心在于优化内容的可抓取性、语义清晰度、权威性。与传统SEO不同,GEO聚焦AI的引用逻辑,需通过爬虫监控AI回答、逆向分析引用源特征(如结构化数据、权威背书),并构建自动化工具优化内容。爬虫工程师需转型为“AI可见性基础设施构建者”,重点关注高权威站点、知识库及官方信息源,同时确保技术可抓取性(如放行AI爬虫UA)。GEO的核心是从“排名”转向“被AI引用”,强调实体识别与动态对话适配。

数据知道的博客 4631

typescript-eslint 一体化包版本演进与核心 API 解读:从 v7 到 v8 的 CHANGELOG 深析

本文以仓库中 [packages/typescript-eslint/CHANGELOG.md](https://link.gitcode.com/i/6a135d805bec5f64ad45d204ea04e1ed) 为骨架,系统梳理 `typescript-eslint` 一体化包从 v6.21 到 v8.70 的版本演进、破坏性变更与 API 沉淀。读者可据此理解该聚合包在 monorepo

gitblog_00609的博客 311

DISK配置服务器软RAID工作任务(RAID1+BITLOCKER)-winserver4

DISK配置服务器软RAID工作任务(RAID1+BITLOCKER)-winserver4

新时代先锋的博客 7294

数据挖掘实战-基于LSTM时间序列模型的香烟销售预测分析

本文介绍了基于LSTM时间序列模型的香烟销售预测分析实验。实验背景为烟草市场竞争激烈,企业需提高销售预测准确性以优化生产、库存和营销策略。LSTM模型因其处理长序列数据的能力被选为预测工具。实验步骤包括数据准备、特征工程、模型构建、训练与评估及结果分析。数据集来自某市门店的销售数据,技术工具为Python 3.9和Jupyter Notebook。实验过程涵盖数据导入、预处理、产品销售与区域销售分析、销售预测(包括销售额、销量、利润及海通店销售额预测)。

m0_64336780的博客 8945

Vortex 日志实时监控的边界情况处理:进行中会话、尚未生成的日志文件与无过滤监控风暴

**导读**:Vortex 的日志监控技能 `/watch-log` 在面向"实时/进行中日志"的 Live(§A)与 Investigate(§B)两个模式下,会加载一份专门的共享边界情况清单([edge-cases.md](https://link.gitcode.com/i/f604281e40b849d8f0d155acb6d90965)),用来处理三类最容易误判的运行态问题:应用还在运行

gitblog_00510的博客 67

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

react-markings快速上手:5分钟在Markdown模板字符串里写React组件

🚀 **react-markings** 是一款轻量级 React Markdown 渲染库,它的核心口号是 "Markdown in components, components in markdown"——你可以直接在 JavaScript 模板字符串里写 **Markdown**,再通过 `${...}` 插值把 **React 组件**嵌入 Markdown 的任何块级位置,并渲染为真实

gitblog_00267的博客 145

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

google-api-nodejs-client 之 @googleapis/gamesManagement 版本演进详解:从 v0.2.0 到 v11.0.1 的完整发布日志解读

本文以 [src/apis/gamesManagement/CHANGELOG.md](https://link.gitcode.com/i/8183366b79a3ad140d808aa5c7b27edc) 这份发布日志为主体,完整梳理 Google Play Games Management API 对应 Node.js 子包 `@googleapis/gamesManagement` 自 2

gitblog_00815的博客 479

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain&#39;s apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath(&#39;DeepLearnToolbox&#39;));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand(&#39;state&#39;,0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = &#39;sigm&#39;;%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, &#39;Too big error&#39;);```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, &#39;Too big error&#39;);```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Gatsby v3.0 发布全解析:增量构建、Fast Refresh 与新一代图像插件

2021 年 3 月,Gatsby 迎来了自 2018 年 9 月 v2 发布以来的首次大版本号跃迁——`gatsby@3.0.0`。本次发布以"构建更快、开发体验更好、图像处理更强"为主线:**增量构建(Incremental Builds)正式面向开源社区默认启用**,**Fast Refresh 取代 react-hot-loader 成为默认热更新引擎**,同时推出全新的 `gatsby-

gitblog_00118的博客 7

ESLint版本管理终极指南:语义化版本与破坏性变更处理实践

ESLint作为JavaScript代码质量检测的行业标准工具,其版本管理策略直接影响着数百万开发者的日常开发工作。本文将深入解析ESLint的语义化版本管理机制,以及如何优雅处理破坏性变更,帮助开发者平稳升级并充分利用ESLint的最新功能。 ## 📋 ESLint版本管理核心原则 ESLint严格遵循[语义化版本控制(SemVer)](https://semver.org/)规范,版本号

gitblog_00929的博客 1064

JUnit 4.9 发布要点深度解析:ClassRule 与 TestRule 如何把测试规则提升到类级别

本文基于 [doc/ReleaseNotes4.9.md](https://link.gitcode.com/i/eaac94ff0d97059dfba5835134a8aad1) 中 JUnit 4.9 的官方发布说明展开,围绕该版本的发布主题「Test-class and suite level Rules」,讲清楚两项核心 API 变更——`@ClassRule` 注解与 `TestRule

gitblog_00210的博客 863

5分钟跑通Facial-Emotion-Detection:BEiT-Large情绪检测模型安装与首次推理完全教程

本教程带你 5 分钟完成 **BEiT-Large 面部情绪检测模型**(Facial-Emotion-Detection-FER-RAFDB-AffectNet-BEIT-Large)的安装与首次推理。该模型基于 microsoft BEiT-Large 微调,使用 FER-2013、RAF-DB 和 AffectNet 三大人脸表情数据集联合训练,只需几行 Python 代码,即可对任意人脸图

gitblog_00194的博客 187

Astron Agent 工作流 DSL 实战:从自然语言需求到可导入的 flowMeta/flowData v1 工作流 YAML

Astron Agent 提供了一套「控制台导出格式 v1」的工作流 YAML DSL,用于在本地(尤其是本地 agent 环境中)编写、修改并导入可视化编排的工作流。本文以仓库内独立分发的 skill 文档 [SKILL.md](https://link.gitcode.com/i/02352bceff7dbe4f72e52d73260401e7) 为核心骨架,完整讲解该 DSL 的文件契约、节

gitblog_00049的博客 536

PenguLoader插件管理全攻略:一键启用、禁用与8大设置选项详解

PenguLoader 是一款面向《英雄联盟》客户端的终极 JavaScript 插件加载器(The ultimate JavaScript plugin loader),它能将 JS 插件直接注入游戏客户端,帮助你改造界面外观并添加个性化功能。本文将手把手带你完成 PenguLoader 插件管理全流程:如何一键启用/禁用插件、如何使用右下角的激活开关,以及 8 大核心设置选项的逐项详解。🐧

gitblog_00522的博客 148

N_m3u8DL-RE m3u8 下载实战手册:从清单到可播放 MP4 的 4 个高频任务

你在 F12 的请求列表里撞见一条 `.m3u8` 地址,直接打开却只见文本——它不是视频,而是一份清单。N_m3u8DL-RE 是跨平台的 m3u8/MPD 流下载器:一条命令完成解析、选轨、下载、解密与合并混流。先看输入到产物的数据流,再按顺序过 4 个高频任务。 ## 📦 它是什么,解决什么问题 N_m3u8DL-RE 面向 MPD/M3U8/ISM 三种清单格式(对应 DASH/HL

gitblog_00207的博客 229
上一篇: Zustand不仅使用起来简单,源码更简单
下一篇: 隔壁小美还不太懂的CSS选择器-_is()、_where()、_not()、_has()
前端冒险家克鲁
博客等级 码龄9年 163粉丝 9原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值