5.7到8.0版本升级导致备份导入失败:提示 “超过行长度“

深入解析LPC210x ISP与IAP:ARM7 Flash编程实战指南 在嵌入式系统开发中,微控制器的Flash编程是基础且关键的技术环节,它直接关系到固件的烧录、更新与数据存储。其核心原理在于芯片内部的Bootloader机制,通过提供ISP和IAP两套编程接口来实现不同场景下的Flash操作。从技术价值看,深入理解这两者不仅能完成基础的固件下载,更能实现产品生命周期内的远程升级、现场调试与代码安全保护。在实际应用场景中,ISP通过串口协议与Bootloader直接通信,适用于出厂烧录和芯片恢复;而IAP则允许应用程序在运行时自我修改,是实现真正在线升级和数据记录的基础。本文 阅读详情

5.7到8.0版本升级导致备份导入失败:提示 “超过行长度”

某应用开发商将用 mysqldump 从 MySQL5.7 导出的数据导入到GreatSQL时,某些表创建失败,提示超过行长度。

模拟信息如下

DROP TABLE cm_plat_user;
CREATE TABLE cm_plat_user
(id int NOT NULL AUTO_INCREMENT ,
netuserid varchar(255),
password varchar(255),
username varchar(255),
useaddress varchar(255),
mobilephone varchar(255),
telphone varchar(255) ,
email varchar(255) ,
sex   char(1) ,
user_type char(1),
description varchar(255),
userdespass varchar(255),
create_time datetime,
create_user varchar(255),
user_expire_time datetime,
passwd_expire_time datetime ,
login_flag char(1),
first_1ogintime datetime ,
last_logintime datetime DEFAULT NULL COMMENT '最后登录时间',
blocked_flag char(1),
blocked_reason  varchar(1000),
last_passwd_mod_time datetime,
user_status char(1),
home_url varchar(255),
theme varchar(255) ,
id_card_number varchar(255),
dept_name varchar(100),
admin_flag char(1) ,
area_code varchar(50) ,
PRIMARY KEY (id) ) ROW_FORMAT=COMPACT;

错误信息

error log信息

2025-08-28T10:13:03.650086+08:00 34 [ERROR] [MY-011825] [InnoDB] Cannot add field blocked_reason in table demo.cm_plat_user because after adding it,
 the row size is 8761 which is greater than maximum allowed size (8126) for a record on index leaf page.

命令行终端报错信息

ERROR 1118 (42000): Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.

问题分析

根据 error log 的日志信息表明,表 demo.cm_plat_user中添加字段 blocked_reason 后,行大小达到了 8761 字节,超过了 InnoDB 索引叶子页的最大允许大小 8126 字节。

问题反思

备份文件导入到GreatSQL时报错,导入MySQL 8.0.X会报错吗? 在MySQL 8.0.32(Server version: 8.0.32 MySQL Community Server - GPL)中进行测试,出现相同的报错信息。 MySQL 5.7升级到MySQL 8.0也有同样问题,说明该问题是MySQL 5.7和MySQL 8.0的差异导致的,版本升级的时候需要特别注意。

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.32    |
+-----------+
1 row in set (0.00 sec)
mysql> CREATE TABLE cm_plat_user
    -> (id int NOT NULL AUTO_INCREMENT ,
    -> netuserid varchar(255),
    -> password varchar(255),
    -> username varchar(255),
    -> useaddress varchar(255),
    -> mobilephone varchar(255),
    -> telphone varchar(255) ,
    -> email varchar(255) ,
    -> sex   char(1) ,
    -> user_type char(1),
    -> description varchar(255),
    -> userdespass varchar(255),
    -> create_time datetime,
    -> create_user varchar(255),
    -> user_expire_time datetime,
    -> passwd_expire_time datetime ,
    -> login_flag char(1),
    -> first_1ogintime datetime ,
    -> last_logintime datetime DEFAULT NULL COMMENT '最后登录时间',
    -> blocked_flag char(1),
    -> blocked_reason  varchar(1000),
    -> last_passwd_mod_time datetime,
    -> user_status char(1),
    -> home_url varchar(255),
    -> theme varchar(255) ,
    -> id_card_number varchar(255),
    -> dept_name varchar(100),
    -> admin_flag char(1) ,
    -> area_code varchar(50) ,
    -> PRIMARY KEY (id) ) ROW_FORMAT=COMPACT;
ERROR 1118 (42000): Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.

解决方案

1、根据命令行的报错提示,修改表行格式为 DYNAMIC 或 COMPRESSED,系统参数innodb_default_row_format默认值为dynamic,建表是去掉ROW_FORMAT=COMPACT后,创建的表行格式默认为dynamic。

2、修改页大小: 将 innodb_page_size 设置为 32KB 或更大,重新初始化数据库。

3、关闭严格检查模式:设置innodb_strict_mode=OFF,然后创建表

风险提示:关闭 innodb_strict_mode 仅为 “临时规避创建报错”,并非根本解决方案。此时表虽能创建,但后续执行 INSERT/UPDATE 操作时,若实际数据仍导致行长度超限,会直接触发数据写入失败(报错 “Row size too large”),甚至可能因数据截断导致数据完整性问题。

使用建议:该方案仅适合 "紧急验证数据结构"场景,生产环境优先选择方案 1(修改行格式)或方案 2(调整页大小),避免长期关闭严格模式。

行格式说明

DYNAMIC和COMPACT的差异:

DYNAMIC 行格式会将 BLOB/TEXT 等大字段完全存储在溢出页中,行内只保留 20 字节的指针,COMPACT会在行内保留768 字节前缀。

DYNAMIC 行格式提供与 COMPACT 行格式相同的存储特性,但增加了针对长可变长度列的增强存储功能,并支持大索引键前缀。 当用 ROW_FORMAT=DYNAMIC`` 创建表时,InnoDB可以完全在页外存储长可变长度的列值(对于VARCHAR, VARBINARY, BLOB和TEXT类型),集群索引记录只包含一个指向溢出页的20字节指针。大于或等于768字节的固定长度字段被编码为可变长度字段。

使用COMPACT行格式的表将可变长度列值(VARCHAR、VARBINARY、BLOB和TEXT类型)的前768字节存储在B-tree节点内的索引记录中,其余的存储在溢出页上。大于或等于768字节的固定长度列被编码为可变长度列,可以存储在页外。

COMPRESSED压缩行格式提供与DYNAMIC行格式相同的存储特性和功能,但增加了对表和索引数据压缩的支持。

对于页外存储,COMPRESSED行格式使用了与DYNAMIC行格式类似的内部细节,同时对表和索引数据进行了额外的存储和性能考虑,并使用了更小的页面大小。对于COMPRESSED行格式,KEY_BLOCK_SIZE选项控制在聚集索引中存储多少列数据,以及在溢出页上放置多少列数据。

innodb_strict_mode参数说明

innodb_strict_mode=ON时,InnoDB在检查无效或不兼容的表选项时返回错误而不是警告。

它检查KEY_BLOCK_SIZE、ROW_FORMAT、DATA DIRECTORY、TEMPORARY和TABLESPACE选项是否相互兼容以及是否与其他设置兼容。

innodb_strict_mode=ON还在创建或修改表时启用行大小检查,以防止由于所选页面大小的记录太大而导致INSERT或UPDATE失败。

参考文章

https://dev.mysql.com/doc/refman/8.0/en/innodb-row-format.html

https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html#sysvar_innodb_strict_mode

Oracle exp/imp 命令实战:3种导出模式与5个关键参数详解(附性能对比) 本文深入解析Oracle数据库迁移中的EXP/IMP命令,详细介绍了三种导出模式(全库、用户、表级别)和五个关键性能参数(COMPRESS、DIRECT、BUFFER、ROWS、IGNORE),并通过实测数据对比不同参数组合的性能差异。文章提供了典型场景的完整命令行示例,帮助DBA和数据库工程师优化数据迁移流程,提升工作效率。 阅读详情

相关推荐

达梦数据库实战:从架构选型到性能优化的全链路指南

数据库作为企业核心数据载体,其高可用、高性能与数据一致性是系统设计的基石。达梦数据库作为国产数据库代表,采用共享存储集群(DMDSC)架构,通过全局缓存管理(GCM)等机制保障事务处理与混合负载能力,在国产化替代与自主可控场景中价值显著。本文聚焦达梦数据库的实战部署与性能优化,涵盖从物理机、虚拟机到容器化部署的选型考量,详解安装配置、SQL优化、索引设计及并发控制等核心运维技术,并结合连接池配置、SQL兼容性等典型问题,为从传统数据库迁移至达梦的团队提供系统性解决方案。

weixin_34006468的博客 452

AI代码生成质量提升:利用Skill注入规范,告别“能用”到“好用”的困境

在软件工程实践中,代码规范是保障项目可维护性、可读性和团队协作效率的基石。其核心原理在于通过一系列预定义的规则和约定,约束代码的书写风格、结构设计和最佳实践,从而降低技术债务,提升长期开发效率。随着AI辅助编程工具的普及,如何确保AI生成的代码符合团队规范,成为新的技术挑战。这涉及到提示词工程、静态代码分析、自动化格式化工具与持续集成流程的有机结合。通过配置项目级的“Skill”——即结合结构化提示词、IDE规则、lint工具和Git钩子的方法论——可以为AI编程助手注入明确的上下文与行为准则,引导其生成高

chuannaoxuan4674的博客 437

拯救祖传代码:Astyle实战指南,5分钟批量格式化混乱的C/C++旧项目

本文详细介绍了如何使用Astyle工具快速格式化混乱的C/C++祖传代码,提升代码可读性和维护效率。从安装配置到实战技巧,涵盖多种代码风格统一策略,帮助开发者高效处理历史遗留项目,实现代码美化与规范化。

aof26372的博客 416

Ubuntu 18.04下PHP+MySQL安全存储图片的BLOB实战方案

BLOB(Binary Large Object)是关系型数据库中存储二进制数据的核心类型,其原理在于将文件内容以原始字节流形式内联或溢出存储于表行中,依托事务与ACID保障数据强一致性。相比文件系统存储,BLOB技术价值在于消除附件与业务记录的逻辑脱钩风险,天然支持原子性增删、权限统一管控及审计可追溯。典型应用场景包括医疗电子病历附件、制造业样品图库、外贸产品图册等需合规性与数据完整性的遗留系统。本文聚焦Ubuntu 18.04 + PHP 7.2 + MySQL 5.7这一经典组合,详解MEDIUMBL

weixin_33898233的博客 406

技术人的自我表达系统:从博客到Tech Space的工程化实践

技术博客早已超越内容发布平台,演变为工程师技术人格的具象化载体。其核心在于以真实问题为起点、可复现操作为路径、踩坑记录为养分,构建具备即时可用性的知识空间。区别于泛泛而谈的教程体,这类系统强调‘现场手记’风格——默认读者具备基础认知,聚焦生产环境中的具体故障(如etcd脑裂、K8s Pending调度)、代码级优化(如Rust内存下降73%)与受限环境下的工具链创新(如200行Bash CI看板)。它融合基础设施实操、代码重构、定制化工具和带温度的技术批判,形成动态平衡的内容生态。本文深入解析一个典型Tec

dianlu5775的博客 551

Oracle数据类型深度解析:INT与NUMBER、CHAR与VARCHAR2的选择策略与性能影响

在数据库设计与优化中,数据类型的选择是影响存储效率、查询性能和系统可维护性的基础环节。从原理层面看,Oracle的INT本质是NUMBER(38,0)的语法糖,而CHAR与VARCHAR2则代表了定长与变长两种存储机制。这些底层差异直接决定了数据在磁盘上的组织方式、索引结构的有效性以及SQL执行计划的生成。从技术价值角度,精确的类型定义能够避免隐式类型转换导致的索引失效,减少存储空间的浪费,并提升I/O效率。在实际应用场景中,对于数字类型,应根据业务范围选择NUMBER的合适精度,而非盲目使用INT;对于字

weixin_30266885的博客 396

Open-Elevation错误处理:常见问题排查与故障排除手册

Open-Elevation是一个免费开源的Google Elevation API替代方案,提供高程数据查询服务。在使用这个开源高程API时,用户可能会遇到各种问题。本手册将为您提供完整的错误处理指南和故障排除方法,帮助您快速解决Open-Elevation部署和运行中的常见问题。🚀 ## 常见错误类型与解决方案 ### 1. 服务器启动失败问题排查 当Open-Elevation服务器

gitblog_01136的博客 416

Oracle数据文件损坏恢复实战:PRM-DUL工具原理与使用深度解析

在数据库运维中,数据文件损坏或误操作导致的数据丢失,往往比实例故障更令人头疼。当常规备份失效、数据库无法启动时,基于数据块直读的底层恢复技术成为最后的希望。PRM-DUL作为Oracle官方DUL的商业化增强版本,能够绕过数据字典和实例状态,直接从数据文件中解析数据块,将行数据萃取导出。本文结合工程实践,系统介绍PRM-DUL v4.1的核心原理、适用场景、操作流程与常见问题,帮助DBA在危急时刻把握数据挽救的最后一根稻草。

weixin_32667955的博客 295

数据科学家必备的8条Shell命令:高效处理大规模数据流

Shell命令是Linux系统中处理文本与数据流的基础工具,其核心原理在于流式处理、低开销I/O和管道化协同。相比高级语言如Python,Shell在探查、过滤、提取、统计等环节具备毫秒级响应与内存友好特性,技术价值体现在零启动延迟、高吞吐处理及强错误可追溯性。典型应用场景包括日志分析、CSV快速采样、ETL预演、生产环境故障定位及CI/CD数据质量门禁。本文聚焦head/tail、wc、grep、cut、sort/uniq、find/xargs、awk、sed这8条高频命令,结合数据科学实战,揭示其在真实

weixin_30378623的博客 567

5分钟搞懂双目相机标定:从棋盘格到3D点云的完整流程(附Python代码)

本文详细介绍了双目相机标定的完整流程,从棋盘格准备到3D点云生成,涵盖单目标定、双目标定、立体校正、视差计算等关键步骤。通过Python代码示例,帮助读者快速掌握双目立体视觉技术,实现高精度的3D重建。特别适合机器人导航、工业检测等应用场景。

weixin_29100399的博客 588

Halcon阈值算子 -- 局部阈值之dyn_threshold

Halcon阈值算子 – dyn_threshold HALCON有很多阈值算子,接下来将一一介绍。本文先介绍dyn_threshold。 以下介绍主要参考HALCON帮助文档,并加上自己的体会。如有纰漏,欢迎留言指出 理论介绍 dyn_threshold算子的函数签名如下: dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : ) 输入参数有: OrigImage:待处理图像 ThresholdIm

m0_47015717的博客 5385

数据科学家必学的8个Shell命令:高效清洗GB级CSV文件

Shell命令是处理大规模文本数据的基础能力,其核心价值在于绕过高级语言解释器开销,直接在操作系统层面进行流式、低内存、高吞吐的数据探查与清洗。原理上,`wc`、`head`、`tail`、`cut`、`sed`、`grep`、`sort`/`uniq` 和 `for` 等命令通过文件描述符操作、正则匹配与管道组合,实现对CSV/日志等结构化文本的秒级规模感知、字段提取、缺失值归一、异常定位与批量治理。技术价值体现在:规避Python加载失败、减少90%以上无效调试时间、建立数据直觉,并支撑金融风控、用户行

congjukun0600的博客 322

YOLOv8中Anchor-Based、Anchor-Free及样本分配策略

本文主要介绍yolov8中的anchor机制与样本分配策略的静态策略和动态策略

qq_52889317的博客 2211

C2000 HEX 解析上位机 转TI8-bit BootStream工具

本文介绍了一个用于TMS320C2000系列DSP的Intel HEX文件与TI 8-bit Boot流相互转换的上位机工具。该工具基于TI官方文档SPRU722C实现,主要功能包括: 支持解析CCS/hex2000导出的Intel HEX文件(记录类型00-05),并转换为TI 8-bit Boot数据流格式 支持逆向解析hex2000生成的TI 8-bit Boot流,提取LOSPCP/SPIBRR等参数和块数据 提供SPI(Table7)和通用(Table5)两种数据流格式选项 实现GUI界面(基于t

happy_baymax的博客 824

别再死记硬背了!用Wireshark抓包实战,5分钟搞懂GRE、L2TP、IPsec的区别

本文通过Wireshark抓包实战,详细解析GRE、L2TP和IPsec三大隧道协议的核心差异与应用场景。从报文结构到配置示例,帮助网络工程师快速掌握这些协议的本质,提升VPN部署与故障排查能力。特别适合准备HCIP认证的工程师深化理解。

weixin_30352645的博客 439

什么是Claude 的 Agent Skills?

摘要: Claude的Agent Skills功能支持通过结构化技能包(含指令、脚本、工具)实现任务自动化,如数据分析、文档生成等。核心能力包括:1)技能包管理(如Python脚本+模板);2)工具调用(API/数据库交互);3)子代理协作(拆分复杂任务)。快速上手步骤:创建技能包(如Excel报表生成)、配置工具权限、触发执行;支持多代理并行处理(如SQL查询+可视化)。关键技巧:工具需明确定义参数、利用子代理共享上下文、注重权限管控。官方文档与社区资源提供进阶指导,使Claude成为可编程的数字助手。

jobleap.cn求职助手首页 1729

MySQL性能优化策略及高可用架构设计与实践+监控与运维自动化!

MySQL性能优化策略及高可用架构设计与实践+监控与运维自动化!

程序员高级码农的博客 1403

Voronoi算法构建多晶

孪晶多晶 采用孪晶的原子链作为种子通过voronoi算法可以得到孪晶多晶结构。 孪晶种子: txt文件不需要特殊设置 box 150 150 150 random 8 得到孪晶多晶: 通过改变孪晶种子的长度可以得到不同孪晶片层厚度的多晶。 准二维柱晶 所有晶粒在某一维度的晶向一致,晶粒仅在平面内具有旋转关系,所有晶界为旋转对称晶界,这种结构的多晶其位错滑移在某些方向受限,但是能极大的提高晶粒...

yamatachi的博客 5280

Ubuntu 14.04 下 Consul 服务发现实战部署指南

服务发现是微服务架构的基础能力,其核心在于实现服务自动注册、健康感知与动态寻址。Consul 作为轻量级、多数据中心就绪的分布式服务网格组件,凭借单二进制部署、内置 DNS 接口和 KV 存储等特性,在资源受限与系统陈旧场景中展现出独特技术价值。尤其在 Ubuntu 14.04 这类长期支持但生态封闭的环境中,Consul 的静态链接 Go 运行时、低内存占用(<30MB)及对 glibc 2.19 的良好兼容性,使其成为替代 ZooKeeper、Eureka 等方案的务实选择。本文聚焦真实产线约束——如

congdi7904的博客 608

TC8:SOMEIPSRV_SD_MESSAGE_07-09

TTL为服务实例的生命周期。在此生命周期之后,不提供服务实例。

jasonj333 908

Android 14.0 系统设置显示主菜单添加屏幕旋转菜单实现旋转屏幕功能

在14.0的系统rom定制化开发中,在对系统设置进行定制开发中,有产品需求要求增加 旋转屏幕功能的菜单,就是在点击旋转屏幕菜单后弹窗显示旋转0度,旋转 90度,旋转180度, 旋转270度针对不同分辨率的无重力感应的大屏设备的屏幕旋转功能的实现, 接下来就来分析实现这个功能

安卓兼职framework和app工程师的博客 1311

树莓派搭建ArduSub地面站:从写卡到视频流的完整实践指南

树莓派作为轻量级Linux嵌入式平台,凭借低功耗、强USB外设兼容性与成熟社区支持,成为水下机器人(ROV)地面站的理想伴侣计算机。其核心原理在于与Pixhawk飞控分工协作:由树莓派承担MAVLink协议桥接、H.264视频流采集与转发等非实时计算任务,释放飞控资源并提升系统可扩展性。该方案显著降低入门门槛,使高校学生与业余爱好者可在数小时内完成稳定部署。结合ardusub入门教程与树莓派写卡实操,本指南覆盖磁盘映像安装、SSH初始化、WiFi联网、companion软件栈配置及视频流调试等关键环节,兼顾

diaogan4202的博客 369

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Delta模拟器金手指完整指南:从预设作弊库到自定义代码,5分钟避开90%的坑

Delta 是一款面向未越狱 iOS 设备的全合一复古游戏模拟器,内置 NES、SNES、GBA、N64 等多平台核心,而它的金手指(作弊码)系统是其中极易被低估的能力:既能通过内置 CheatBase 数据库一键获取经过验证的预设作弊,也能针对不同平台写入自定义代码,直接修改游戏内存实现无限生命、跳关等效果。本文带你拆解这套系统的运作机制,并给出一份"代码不生效"时的排障自查表。 [![Del

gitblog_00098的博客 902

深度学习工具包 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'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('DeepLearnToolbox'));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('state',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'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',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 = 'sigm';%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, 'Too big error');```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('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';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)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';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, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% 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'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 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, 'Too big error');```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('state',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, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',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, 'Too big error');%% ex3 neural net with dropoutrand('state',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, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % 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, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % 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, 'Too big error');%% 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('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % 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, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Python语法入门全解析:从零开始掌握核心概念与实战技巧

编程语言作为人机交互的桥梁,其语法规则是构建程序逻辑的基础。Python以其简洁明了的语法设计,降低了编程入门的门槛,成为初学者和跨领域开发者的首选。其核心原理在于通过清晰的代码结构和丰富的内置数据类型,实现高效的逻辑表达。掌握Python语法不仅能够快速构建脚本工具,更是深入数据分析、Web开发和自动化运维等领域的技术基石。本文聚焦Python语法入门,系统讲解变量、数据类型、流程控制等核心概念,并结合缩进规则、异常处理等常见问题,提供从环境搭建到实战项目的完整学习路径,帮助读者构建扎实的编程基础。

weixin_33725239的博客 372

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Sublime Text 3 Python开发环境配置与效率优化指南

代码编辑器是开发者日常工作的核心工具,其性能与可扩展性直接影响编码效率。Sublime Text 3以其极致的启动速度和响应性能著称,通过轻量级架构实现快速文件处理与流畅编辑体验。在技术价值上,它支持强大的多光标编辑和Goto Anything搜索功能,显著提升代码导航与批量修改效率。结合Package Control插件生态,开发者可以集成Anaconda实现智能代码补全,利用SublimeLinter进行实时语法检查,打造高度定制化的开发环境。这些特性使其在快速脚本编写、日志文件查看及追求无干扰编码场景

weixin_30588675的博客 394
上一篇: GreatSQL CTE 查询报告临时表找不到问题解析
下一篇: GreatSQL MGR三节点基于时间点恢复
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值