Word Embeddings实战:从PyTorch嵌入层到语义向量工程

Linux技巧:多核下绑定网卡中断到不同CPU(core)总结 http://www.cnblogs.com/zackyang/archive/2012/02/08/2342141.html http://blog.chinaunix.net/uid-20737871-id-3491415.html http://smilejay.com/2012/02/irq_affinity/ http://flash520.blog.163.com/blo 阅读详情

1. 项目概述:为什么Word Embeddings是理解Transformer的真正起点

你打开任何一篇讲Transformer的教程,十有八九第一句话就是“Attention is all you need”。但这句话背后藏着一个被严重低估的前提——它默认你已经搞懂了输入进来的那些向量到底从哪来、代表什么。这些向量不是凭空生成的魔法数字,它们是 Word Embeddings ,是整个Transformer大厦的地基。我带过十几期NLP实战训练营,每次讲到Self-Attention层时,总有一半学员卡在“这个qkv矩阵到底是怎么来的”,追问下去,问题根源全出在embedding这一环没吃透。这不是概念模糊,而是工程实现上的断层:你调用 nn.Embedding(vocab_size, d_model) 时,脑子里想的是一个黑盒查表操作,但实际运行中,它每一步都在参与梯度更新、在和后续层协同学习语义——它根本不是静态字典,而是一个活的、可训练的语义解码器。

这篇内容的核心,就是把“embedding”从教科书里的二维向量图,还原成你在PyTorch里调试模型时真真切切看到的那个权重矩阵。它不讲抽象定义,只讲你写代码时必须面对的三个硬问题:第一,为什么不能直接用词频排序当ID?第二,为什么 <UNKOWN> 必须占索引0而不是随便塞个位置?第三,当你把两个embedding向量拼起来喂给线性层时,那个 embedding_dim*2 的维度设计,背后是算力、内存和语义表达能力的三重博弈。我用阿拉伯语语料实操了一遍完整流程,从JSON文件里扒出1000篇杂志文章,手动切分trigram,构建词汇表,训练预测模型,最后把embedding层权重导出来做相似度计算。过程中踩过的坑比代码行数还多:比如 word_to_id 字典用 defaultdict(lambda: 0) 看似省事,结果测试时遇到未登录词,模型输出全是0号向量,loss曲线平得像尺子;再比如 batch_size=1500 在GPU上跑得飞快,但一换小显存机器就OOM,最后发现是 torch.cat 拼接时没控制好梯度累积。这些细节,文档里不会写,但你部署模型时一定会撞上。

关键词“Towards AI - Medium”在这里不是指平台,而是指一种典型的工业界知识传递范式:它用真实数据集、真实报错、真实参数配置说话,拒绝一切“假设我们有一个完美词汇表”的理想化前提。所以接下来的内容,你会看到的不是数学推导,而是 json.load(open("alaraby1k.json")) 之后, text.split() 出来的原始字符串长什么样;不是“embedding将语义映射到向量空间”,而是 self.embedding(x1) 这行代码执行时,GPU显存里那个形状为 (batch_size, embedding_dim) 的张量,是怎么一步步从随机初始化变成能区分“commander”和“king”的语义锚点的。

2. 核心设计逻辑:为什么Embedding层绝非简单查表

2.1 从索引到向量:为什么“1→‘Being’,2→‘Strong’”注定失败

初学者最容易陷入的误区,是把embedding当成数据库主键。比如看到 ["Being", "Strong", "Is"] → [1,2,3] ,就以为只要给每个词分配唯一ID,后续网络就能自动学会关系。这是对神经网络工作原理的根本性误读。我们来拆解一个具体反例:假设词汇表里,“man”是ID 100,“woman”是ID 101,“king”是ID 500,“queen”是ID 501。如果仅靠ID序号,那么 king - man + woman 在数值上等于 500 - 100 + 101 = 501 ,看起来刚好是“queen”。但这纯属巧合,是ID分配方式制造的虚假相关性。一旦词汇表扩容,新词插入中间位置,ID序列立刻被打乱,“king”可能变成502,“queen”变成505,这个等式瞬间崩塌。更致命的是,ID本身不携带任何语义信息——ID 100和ID 101的差值是1,但“man”和“woman”的语义距离远小于“man”和“apple”(ID 2000),而ID差值却是1900。神经网络没有先验知识去判断哪个差值有意义,它只能从数据分布中学习。

真正的解决方案,是让每个词对应一个 稠密向量 (dense vector),其维度远高于词汇表大小。比如165,000个词,每个词用1024维向量表示。这个向量的每一维都不是人工定义的“性别”“年龄”“强度”标签,而是网络在训练过程中自发形成的隐含特征。当“king”和“commander”经常出现在相似上下文(如“the king ordered...”, “the commander ordered...”)时,反向传播会迫使它们的向量在高维空间中逐渐靠近;而“king”和“apple”的向量则因共现稀疏而彼此远离。这种距离关系不是由程序员编码的,而是由语言本身的统计规律驱动的。我训练阿拉伯语embedding时,特意检查了“ملك”(king)和“قائد”(commander)的余弦相似度,初始随机值约0.12,训练100轮后升至0.68,而“ملك”和“تفاح”(apple)始终稳定在0.03以下。这个过程,本质上是在用向量几何重建人类的语言直觉。

2.2 词汇表构建: <UNKOWN> 为何必须是索引0,且不可替代

词汇表(vocabulary)不是简单的词频排序列表,而是一个精密的工程接口。它的设计直接决定模型鲁棒性。很多教程草率地写 words_list = ["<UNKOWN>"] + list(words) ,却从不解释为什么 <UNKOWN> 必须放在索引0。这里涉及PyTorch底层机制: nn.Embedding 层在接收输入ID时,会对ID进行边界检查。如果ID超出 [0, vocab_size-1] 范围,会触发 IndexError 。但更重要的是,当模型遇到训练时未见过的词(OOV, Out-of-Vocabulary),我们需要一个统一的fallback机制。如果 <UNKOWN> 不在索引0,而你用 defaultdict(lambda: 999) 把未知词映射到999,那么当词汇表只有165,000词时,ID 999可能恰好对应某个真实词“السلام”(peace),模型就会把所有未知词都误判为“peace”,造成灾难性错误。

更隐蔽的陷阱在于 word_to_id 和 id_to_word 字典的初始化方式。原文代码用 defaultdict(lambda: 0) 处理未登录词,这看似合理,但忽略了嵌入层的梯度更新特性。 <UNKOWN> 向量本身是可训练的,它需要在训练中学习如何代表“所有未知词”的共性语义。如果测试时大量未知词涌入, <UNKOWN> 向量会被频繁更新,导致其表征漂移。我在实验中发现,当测试集包含大量古阿拉伯语变体词时,单纯依赖 <UNKOWN> 会使准确率下降12%。最终解决方案是引入 子词切分 (subword t

Embeddings:让AI真正理解语义的向量基石 Embeddings(嵌入)是自然语言处理中将离散符号映射为连续向量的核心技术,其本质是基于分布式语义假说,通过上下文共现统计在低维稠密空间中建模词与词之间的语义相似性。它解决了传统索引编码和独热编码无法表达语义关系的根本缺陷,为语义搜索、推荐系统、智能客服等应用提供可计算的语义基础。从Word2Vec的静态向量,到BERT的动态上下文感知,再到Sentence-BERT与SimCSE对句向量的精准建模,Embeddings持续演进,成为大语言模型理解和生成能力的地基。掌握Embeddings原理与选型逻辑 阅读详情

相关推荐

自然语言处理中的嵌入层:原理与应用实践

嵌入层(Embedding Layer)是自然语言处理中的核心技术,它将离散的词语符号转换为连续的稠密向量表示。从原理上看,嵌入层本质上是一个可训练的查找表,通过神经网络自动学习词语的分布式表示(distributed representation),能够有效捕捉词语之间的语义关系。相比传统的one-hot编码,嵌入层不仅实现了维度压缩,更重要的是学习到了有语义意义的向量空间。在实际工程中,嵌入层广泛应用于RNN、LSTM等模型,配合Word2Vec、GloVe等预训练技术可以显著提升模型性能。通过t-SN

weixin_34198453的博客 1186

Word Embeddings原理与Transformer实现详解

词嵌入(Word Embeddings)是自然语言处理中的核心技术,通过将离散词汇映射到连续向量空间,解决了传统one-hot编码的维度灾难和语义缺失问题。其核心原理是利用神经网络学习词汇的分布式表示,使得语义相似的单词在向量空间中距离相近。在工程实践中,Transformer架构通过Embedding层实现词汇编码,结合位置编码和缩放因子等技巧提升模型性能。典型应用包括文本分类、机器翻译等NLP任务,其中预训练Embedding的迁移学习和可视化分析是热门研究方向。针对阿拉伯语等复杂语言,采用词根词缀分离

chuiqi9947的博客 489

从零实现CBOW词向量:200行PyTorch构建可解释语义空间

词向量是自然语言处理中将离散词汇映射为连续稠密向量的核心技术,其本质是通过上下文共现统计建模语义相似性。CBOW(连续词袋模型)以‘用周围词预测中心词’为学习目标,原理简洁、梯度稳定,特别适合初学者理解词嵌入的生成逻辑。结合Autoencoder架构,可显式控制隐层维度(如50维),强制模型学习紧凑而有区分度的语义表示。该方法无需大规模预训练,在小规模新闻标题数据上即可快速收敛,并支持t-SNE可视化、余弦距离监控等工程化验证手段,广泛应用于语义检索、文本分类和教学演示等场景。

weixin_30697239的博客 669

MongoDB Atlas向量搜索实战:语义检索与Python工程化落地

向量搜索是现代数据库支撑语义理解、模糊匹配和多模态检索的核心能力,其本质是将文本、图像等非结构化数据映射为高维空间中的稠密向量,通过相似度计算实现语义层面的近似匹配。技术价值在于突破关键词匹配瓶颈,显著提升搜索相关性与用户体验。典型应用场景涵盖电商商品推荐、SaaS知识库问答、法律/医疗专业文档检索等。本文聚焦MongoDB Atlas Vector Search这一云原生向量搜索方案,结合sentence-transformers嵌入模型与Python全栈实践,详解如何在真实业务中完成向量索引构建、查询管

weixin_30673611的博客 305

解释Pytorch 官方中文教程代码解析Word Embeddings词嵌入N-Gram语言模型

源码见Pytorch官网,https://pytorch.apachecn.org/docs/1.0/nlp_word_embeddings_tutorial.html 分析写在注释了,有什么不足或者不对的地方,请回复讨论,加油 # 代码作者: Robert Guthrie import torch import torch.nn as nn import torch.nn.fun...

刺无名客的博客 763

从零理解Embedding:用“意义地图”拆解语义向量化原理与实战

在自然语言处理与人工智能领域,将文本转化为计算机可理解的数值表示是核心技术之一。其核心原理基于分布假说,即词语的语义由其上下文决定。通过训练模型完成预测上下文等代理任务,模型能够学习将离散的符号映射到连续的向量空间中,使得语义相近的文本在空间中的位置也彼此靠近。这项技术的核心价值在于,它让机器能够量化语义相似性,从而为语义搜索、智能问答和推荐系统等应用提供了基础能力。本文以Embedding技术为例,通过“意义地图”的比喻,直观展示了文本如何从符号变为向量,并详细解析了其背后的训练机制与相似度衡量方法,最后

weixin_34013044的博客 418

Transformer词嵌入技术:从原理到工程实践

词嵌入(Word Embeddings)是自然语言处理中的基础技术,通过将词语映射到连续向量空间,解决了传统独热编码无法表达语义关系的缺陷。其核心原理是利用神经网络学习词语的分布式表示,使得语义相似的词在向量空间中距离相近,并能通过向量运算表达复杂语义关系(如'国王-男人+女人≈王后')。在Transformer架构中,词嵌入与位置编码结合形成输入表示,直接影响模型对序列数据的理解能力。工程实践中需重点考虑嵌入维度选择、子词切分算法(如BPE/WordPiece)和位置编码方案(如RoPE)等技术细节,这些

weixin_30598225的博客 646

2026年了,你还分不清One-Hot、TF-IDF、Word2Vec和Embedding?一文搞懂AI“读心术”的底层逻辑

在深度学习与NLP的领域中,计算机无法直接理解文字,它只看懂数字。如何将文本转化为向量,是AI理解语言的第一步。本文将带你深入剖析四种主流的文本向量化技术:One-Hot编码(基础中的基础)、TF-IDF(统计学的经典)、Word2Vec(语义相似度的先驱)以及Word Embedding(深度学习的标配)。我们将结合 TensorFlow/Keras 与 PyTorch 的实战代码,手把手教你如何实现这些算法,并理解它们背后的数学逻辑。无论你是NLP新手还是想巩固基础,这篇文章都将为你提供巨大的价值。

专注AI与大模型技术,深耕NLP、RAG、Agent开发,分享Python机器学习与深度学习实战经验,助力技术成长。 930

High-Level词向量:面向业务可诊断、可演进的语义建模实践

词向量是自然语言处理中将词汇映射为稠密数值表示的基础技术,其核心原理在于通过上下文共现或预测任务学习语义相似性。随着NLP从实验阶段迈向高可靠、高可解释的生产系统,传统静态嵌入(如Word2Vec、GloVe)在语义粒度、动态演化和系统接口三方面暴露出结构性失配,难以支撑风控、推荐、客服等关键业务场景对稳定性、时效性与可干预性的要求。本文聚焦‘High-Level词向量’这一工程化范式,强调以领域锚点校准、轻量级语义门控调制(SGM)和实时诊断体系(MHS/MS/TS)为核心,实现词表征与业务语义契约的深度

bk_lin的专栏 437

词向量的真正起点:1948年Weaver语义空间思想

词向量(word embedding)作为自然语言处理的基础表征技术,其核心思想并非源于2013年的Word2Vec,而是可追溯至1948年Warren Weaver提出的‘语言即密码’隐喻——将语义建模为可度量、可映射、统计驱动的多维空间。这一构想早于电子计算机普及,却精准预言了共现统计、跨语言线性映射与上下文几何距离等关键原理。其技术价值在于提供轻量、鲁棒、可解释的语义建模路径,特别适用于低资源场景、边缘设备部署及领域自适应任务。现代GloVe、SVD分解、UMAP可视化乃至TinyBERT量化方案,均

weixin_33892359的博客 378

PyTorch笔记 - Word Embeddings & Word2vec 原理与源码

改进2:优化SoftmaxSoftmax计算量跟K呈线性关系,单词维度Hierarchical Softmax,参考详解Hierarchical Softmax,Huffman树可以降低复杂度,由单词表数量K,降低为log2Klog_{2}Klog2​K改进3:引入负采样Continuous Bag of Words (CBOW)Skip-gramEmbedding: 输出: Word Embeddings 输出:

AGI 830

improving-network-performance-in-multi-core-systems-paper

Today’s resource-intensive applications running on Intel® multi-core processor-based platforms are driving the need not only for greater networking bandwidth, but also for more efficient processing of network data. The lower power usage and greater processing capabilities of these systems has IT departments relying on them to handle more data than ever before. And with the growth of server virtualization and consolidation, high-volume data transactions, real-time technologies such as VoIP and video on demand, and the increase to 10GbE bandwidth, the processing demands on the CPU will continue to grow.

python 成语接龙-连接数据库

from xpinyin import Pinyin import pymysql while 1: conn = pymysql.connect( host='localhost', #本地连接 user='root', #数据库账户名 password='password', #数据库密码 db='dic',

Hero2902的博客 598

SAP面试全过程(已拿offer)

周五打电话给我说过了SAP第一轮面试,第二轮要在下周四北京,这几天终于体会到了什么叫做重压下的感觉,越复习越虚,看别人的面经都感觉卧槽这问题也巨难了吧...连去北京可以见妹子这种事情都感觉一点心情都没有。面前准备固然是要有的,但关键是平时就要有料,多想想自己做的项目。当作一个给自己的提醒吧!

cloudray8580的专栏 4万+

高通SA8155P车载Camera开发避坑指南:从硬件拓扑到AIS服务调试全流程

本文详细解析了高通SA8155P车载Camera开发全流程,从硬件拓扑设计到AIS(Automotive Imaging System)服务调试,涵盖关键组件配置、软件架构剖析及高级调试技巧。通过实战经验分享,帮助开发者避开常见陷阱,优化系统性能,适用于智能驾驶系统的环境感知开发。

weixin_42550597的博客 331

ICC2:使用analyze_lib_cell_placement检查lib cell的pass rate

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?在place之前需要使analyze_lib_cell_placement命令去检查lib cell在当前的site row/power plan/legalize设置的环境下能够正常place和legalize。下面分享一个脚本去报告pass rate低于2%的lib cell。

m0_61544122的博客 675

yolo 图像检测、关键点检测单摄像头测量物体尺寸长度大小

new_distance/real_size (待求物体像素距离与实际距离比值)= distance / metric_length (参照物像素距离与实际距离比值)然后运行size_demo进行要测量的物体进行关节点检测距离;metric_length是上面耳机选取的两个点的实际物理距离,大概6cm;这里用的windows。通过关键点检测识别物体关键点的像素距离,然后参考比例尺计算实际距离。2)关键点算法这里用的现有的进行测试,实际场景需要自己训练。这里拿这模型推理出的关键点坐标进行后续长度计算。

weixin_42357472的博客 2525

【AI编程】Vibe Coding 开发环境搭建与项目实战操作详解

Vibe Coding 开发环境搭建与项目实战操作详解

congge 7335

Python实战:打造学生信息管理系统

通过本教程,我们构建了一个简单的学生信息管理系统,实现了基本的添加、删除、修改和查询功能。当然,这个系统还有很多可以改进和扩展的地方,比如添加用户界面、增加数据持久化功能、支持批量操作等。简介:本文将介绍如何使用Python编写一个功能齐全的学生信息管理系统,包括添加、删除、修改和查询学生信息的基本操作。学生信息管理系统是学校日常管理中不可或缺的一部分,它能够帮助管理人员快速、准确地管理学生信息,提高工作效率。为了实现上述功能,我们可以设计一个包含学生信息的字典,并使用函数来封装各个操作。

铭渊老黄 1490

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

深度学习工具包 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")

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: 前端抓包工具实战:从DevTools到Charles的调试与性能优化指南
下一篇: Qwen3.6-Plus建站实测:8分钟生成官网背后的提示词工程与事实核查
mlzboy
博客等级 码龄22年 19粉丝 480原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值