1. 词汇表大小(input_dim)计算方法

嵌入层Embedding中的input_dim是根据数据中所有唯一词(或字)的总数来决定的。可以通过Tokenizer文本分词和编码得到。

简单说,Tokenizer 是一个文本分词和编码器,它主要做两件事:

  • 分词:将句子拆分成词或字
  • 编码:为每个词/字分配唯一的数字编号

例如:

from keras.preprocessing.text import Tokenizer# 假设这是你的训练文本数据
texts = ["我爱吃苹果","苹果很好吃","我不喜欢香蕉","香蕉和苹果都是水果"
]# 创建分词器并构建词汇表,设置 char_level=True 按字分词
# 如果想要更加合理的中文分词,比如“苹果”合并为一个词,可以使用中文分词工具(如 jieba)
# import jieba  # 需要安装: pip install jieba后  tokenized_texts = [' '.join(jieba.cut(text)) for text in texts]
tokenizer = Tokenizer(char_level=True)
tokenizer.fit_on_texts(texts)  # 学习所有文本,构建词汇表# 查看词汇表,可以看到词或字对应的索引数字
word_index = tokenizer.word_index
print("词汇表:", word_index)
# 输出可能是: {'果': 1, '苹': 2, '我': 3, '吃': 4, '香': 5, '蕉': 6, '爱': 7, '很': 8, '好': 9, '不': 10, '喜': 11, '欢': 12, '和': 13, '都': 14, '是': 15, '水': 16}# 词汇表大小 = 唯一词的数量 + 1(+1是为了预留索引0给填充值),这边的值就是嵌入层Embedding中input_dim的数值
vocab_size = len(word_index) + 1
print("词汇表大小:", vocab_size)  # 输出: 17# 将文本转换为数字序列
sequences = tokenizer.texts_to_sequences(texts)
print("数字序列:", sequences)
# 输出:[[3, 7, 4, 2, 1], [2, 1, 8, 9, 4], [3, 10, 11, 12, 5, 6], [5, 6, 13, 2, 1, 14, 15, 16, 1]]

所以 input_dim=18,因为我们的词汇表有17个唯一词 + 1个填充索引

2.Tokenizer作用和简单用法

Tokenizer会自动:

  • 统计所有文本中出现的词/字
  • 按出现频率从高到低排序
  • 分配编号(频率最高的词编号为1,次高的为2,以此类推)
import numpy as np
from keras.models import Sequential
from keras.layers import Embedding
from keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences# 1. 准备数据
texts = ["我爱吃苹果","苹果很好吃", "我不喜欢香蕉","香蕉和苹果都是水果"
]# 2. 创建词汇表
tokenizer = Tokenizer(char_level=True)
tokenizer.fit_on_texts(texts)
word_index = tokenizer.word_index
vocab_size = len(word_index) + 1  # +1 为填充符0print("词汇表:", word_index)
print("词汇表大小:", vocab_size)# 3. 文本转数字序列
sequences = tokenizer.texts_to_sequences(texts)
print("原始序列:", sequences)# 4. 填充序列到相同长度(input_length=5)
padded_sequences = pad_sequences(sequences, maxlen=5, padding='post')
print("填充后序列:")
print(padded_sequences)# 5. 创建Embedding层(input_dim根据vocab_size决定)
model = Sequential()
model.add(Embedding(input_dim=vocab_size,  # 这里是18output_dim=8,          # 每个词用8维向量表示,是一个超参数,需要根据经验和实验来确定,小词汇表(<1000):4-16维,一般8input_length=5         # 每个序列5个词,由最大长度maxlen决定,这边是9。统计所有序列长度:取一个合适的百分位数(如95%)
))# 查看模型摘要
model.summary()# 测试预测
sample_input = padded_sequences[:2]  # 取前两个样本
print("\n输入数据:", sample_input)
print("输入形状:", sample_input.shape)  # (2, 5)output = model.predict(sample_input)
print("输出形状:", output.shape)        # (2, 5, 8)

输出结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/95323.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/95323.shtml
英文地址,请注明出处:http://en.pswp.cn/web/95323.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python中的分代垃圾回收机制的原理【python进阶二、2】

1. 分代设计思想Python 将对象按存活时间分为三代&#xff08;Generation 0, 1, 2&#xff09;&#xff1a;0代&#xff08;年轻代&#xff09;&#xff1a;新创建的对象。1代&#xff08;中年代&#xff09;&#xff1a;经历一次GC扫描后存活的对象。2代&#xff08;老年代&am…

【后端】云服务器用nginx配置域名访问前后端分离项目

云服务器有多个服务&#xff08;前端 3000 端口、后端 8288 端口&#xff0c;甚至还有别的服务&#xff09;。希望用户只输入 域名&#xff08;比如 https://example.com&#xff09;&#xff0c;而不是 example.com:3000、example.com:8288。本质上是要做 端口隐藏 域名统一入…

软考中级数据库系统工程师学习专篇(67、数据库恢复)

67、数据库恢复数据库故障恢复中基于检查点的事务分类与处理策略在数据库系统发生故障后的恢复过程中&#xff0c;​检查点&#xff08;Checkpoint&#xff09;​​ 技术是关键机制&#xff0c;它能有效缩小恢复范围&#xff0c;减少需要扫描的日志量&#xff0c;从而加速恢复进…

SpringBoot 分库分表 - 实现、配置与优化

分库分表&#xff08;Database Sharding&#xff09;是一种数据库架构优化技术&#xff0c;通过将数据分散到多个数据库或表中&#xff0c;以应对高并发、大数据量场景&#xff0c;提升系统性能和扩展性。 在 Spring Boot 中&#xff0c;分库分表可以通过框架支持&#xff08;如…

爬虫代理实操:选择可靠的HTTP(S)代理的方法

在爬虫工作里&#xff0c;选对代理协议&#xff08;HTTP/HTTPS&#xff09;只是第一步&#xff0c;更关键的是找到 “可靠” 的代理 —— 哪怕是 HTTPS 代理&#xff0c;若节点不稳定、IP 纯净度低&#xff0c;照样会频繁被封&#xff0c;反而耽误采集进度。这几年踩过不少坑&a…

数据库常见故障类型

数据库常见故障类型数据库系统运行过程中可能发生的故障主要分为以下三类&#xff0c;其破坏性由小到大&#xff1a;故障类型别名根本原因影响范围典型例子​1. 事务故障​逻辑故障事务内部的程序逻辑错误或输入异常。​单个或少量事务。- 输入数据不合法&#xff08;如除零错误…

【Android】Span富文本简介

一&#xff0c;概述android.text包下span体系类&#xff0c;主要指Spanned、Spannable、ParagraphStyle、CharacterStyle实现类。Android通过Span体系&#xff0c;搭建了富文本API&#xff0c;其中Spanned、Spannable实现了CharSequence接口&#xff0c;旨在映射段落start~end之…

【HTML】draggable 属性:解锁网页交互新维度

一、简介 在Web开发中&#xff0c;用户与内容的交互方式直接影响用户体验的深度。在 HTML 中&#xff0c;draggable 是一个全局属性&#xff0c;通过简单配置即可让任意元素实现拖拽功能。也可通过结合 draggable 属性和 JavaScript 事件&#xff0c;可以实现丰富的拖放交互功能…

如何在Github中创建仓库?如何将本地项目上传到GitHub中?

1.1 点击New repository&#xff08;这个是创建代码仓库的意思&#xff09;初次完成后只有一个文件最后&#xff1a;在本地git clone 项目地址然后把项目文件复制到git的文件夹内再提交到远程仓库git add . git commit -m "修改https"git push origin mainmain为分支…

【前端教程】HTML 基础界面开发

一、网站导航栏设计与实现 导航栏是网站的重要组成部分&#xff0c;负责引导用户浏览网站的各个板块。以下是一个实用的导航栏实现方案&#xff1a; 实现代码 HTML 结构&#xff1a; <!DOCTYPE html> <html> <head><meta charset"utf-8" /&…

【学Python自动化】 6. Python 模块系统学习笔记

一、模块基础 什么是模块&#xff1f;包含 Python 定义和语句的 .py 文件解决代码复用和组织问题每个模块有自己的命名空间创建模块示例# fibo.py - 斐波那契模块 def fib(n):"""打印小于n的斐波那契数列"""a, b 0, 1while a < n:print(a, e…

机器学习-时序预测2

门控循环单元GRU 接着机器学习-时序预测1-CSDN博客这个说&#xff0c;GRU是LSTM的一个简化而高效的变体&#xff0c;都使用“门控机制”来控制信息流&#xff0c;但它通过合并一些组件&#xff0c;使结构更简单、参数更少、计算更快&#xff0c;同时在许多任务上性能与 LSTM 相…

数据湖与数据仓库

大数据前沿技术详解 目录 数据湖技术湖仓一体架构数据网格实时流处理技术云原生数据技术数据治理与血缘AI原生数据平台边缘计算与大数据 核心内容包括&#xff1a; 数据湖技术 - 架构模式、技术栈、面临的挑战 湖仓一体架构 - Delta Lake、Iceberg、Hudi等主流实现 数据网格…

Python OpenCV图像处理与深度学习:Python OpenCV入门-图像处理基础

Python OpenCV入门实践&#xff1a;图像处理基础 学习目标 通过本课程&#xff0c;学员们将了解OpenCV的基本概念、安装方法&#xff0c;掌握如何使用Python和OpenCV进行基本的图像处理操作&#xff0c;包括图像的读取、显示、保存以及简单的图像变换。 相关知识点 Python Open…

【lua】Lua 入门教程:从环境搭建到基础编程

Lua 入门教程&#xff1a;从环境搭建到基础编程 Lua 是一种轻量级、可扩展的脚本语言&#xff0c;广泛应用于游戏开发&#xff08;如《魔兽世界》《Roblox》&#xff09;、嵌入式系统、Web 后端等领域。它语法简洁、运行高效&#xff0c;非常适合作为编程入门语言或辅助开发工…

MySQL索引事务(未完成)

索引的相关操作1.查看索引show index from 表名;2.创建索引create index 索引名字 on 表名(列名);创建索引&#xff0c;是一个危险操作创建索引的时候&#xff0c;需要针对现有的数据&#xff0c;进行大规模的重新整理如果当前表是一个空表&#xff0c;或者数据不多&#xff0c…

Docker一键快速部署压测工具,高效测试 API 接口性能

以下是对该压测工具的简单介绍&#xff1a; 这是一个简易的在线压测工具&#xff0c;可以对 API 接口/页面、websocket服务等进行压力测试&#xff0c;检验服务的并发能力使用 thinkphp ant design pro 构建&#xff0c;压测能力驱动基于 wrk 、 php 多进程协程实现支持在线授…

前端缓存问题详解

前端缓存是提升网页性能和用户体验的重要手段&#xff0c;但也常导致资源更新不及时等问题。以下是关于前端缓存的核心知识点和解决方案&#xff1a; 一、缓存类型及工作原理HTTP缓存&#xff08;最核心&#xff09; 强缓存&#xff1a;直接从本地读取&#xff0c;不请求服务器…

webpack升级

一、调研对比维度Webpack 4 状态Webpack 5 改进与优势构建速度较慢&#xff0c;增量构建效率低✅ 引入 持久化缓存&#xff08;filesystem cache&#xff09;&#xff0c;二次构建速度提升高达 90%Tree Shaking支持基础 Tree Shaking&#xff0c;需手动配置✅ 更强的 Tree Shak…

Logstash数据迁移之es-to-kafka.conf详细配置

在 Logstash 中配置从 Elasticsearch (ES) 读取数据并输出到 Kafka 是一个相对高级但强大的用法&#xff0c;通常用于数据迁移、重新索引、或构建新的数据管道。 下面我将详细解释配置文件的各个部分和细节。 核心配置文件结构 (es-to-kafka.conf) 一个完整的配置文件主要包含三…