Keras时序生成器

Keras时序数据生成器实战:参数配置与生产优化 时序数据处理是时间序列预测任务中的基础环节,传统滑动窗口方法存在代码冗余和边界错误风险。Keras TimeseriesGenerator通过动态批生成机制,将原始时序数据自动转换为监督学习所需的样本结构,显著提升数据准备效率。该工具核心原理在于维护时序因果关系,通过length、stride等参数控制输入窗口和预测步长,支持多变量数据自动对齐。在电力负荷预测、空气质量监测等场景中,合理配置sampling_rate和batch_size参数可平衡模型精度与内存消耗。需特别注意shuffle参数在验证集的禁 阅读详情

TimeseriesGenerator

import numpy as np
from keras.preprocessing.sequence import TimeseriesGenerator
y = np.array(range(5))
tg = TimeseriesGenerator(y, y, length=3, sampling_rate=1)
for i in zip(*tg[0]):
    print(*i)
"""
[0 1 2] 3
[1 2 3] 4
"""
y = np.array(range(6))
tg = TimeseriesGenerator(y, y, length=3, sampling_rate=1, stride=2)
for i in zip(*tg[0]):
    print(*i)
"""
[0 1 2] 3
[2 3 4] 5
"""
y = np.array([[i] for i in range(5)])
tg = TimeseriesGenerator(y, y, length=3, sampling_rate=1)
for i in zip(*tg[0]):
    print(*i)
"""
[[0] [1] [2]] [3]
[[1] [2] [3]] [4]
"""
y = np.array([[i] for i in range(6)])
tg = TimeseriesGenerator(y, y, length=3, sampling_rate=1, stride=2)
for i in zip(*tg[0]):
    print(*i)
"""
[[0] [1] [2]] [3]
[[2] [3] [4]] [5]
"""
y = np.array([(i, i) for i in range(5)])
tg = TimeseriesGenerator(y, y, length=3, sampling_rate=1)
for i in zip(*tg[0]):
    print(*i)
"""
[[0 0] [1 1] [2 2]] [3 3]
[[1 1] [2 2] [3 3]] [4 4]
"""

示例1:余弦曲线预测

在这里插入图片描述

RNN版

import numpy as np, matplotlib.pyplot as mp
from keras.preprocessing.sequence import TimeseriesGenerator
from keras.models import Sequential
from keras.layers import Dense, LSTM

"""创建样本"""
x_len = 1075
x = np.linspace(0, np.pi * 10.75, x_len, endpoint=False)
y = np.cos(x).reshape(-1, 1)
window = 75  # 时序滑窗大小
batch_size = 256
tg = TimeseriesGenerator(y, y, length=window, batch_size=batch_size)
print(tg[0][0].shape)  # (256, 75, 1)
print(tg[0][1].shape)  # (256, 1)
print(tg[3][0].shape)  # (232, 75, 1)
print(tg[3][1].shape)  # (232, 1)

"""建模"""
model = Sequential()
model.add(LSTM(units=50, input_shape=(window, 1),
               return_sequences=True))  # True返回输出序列的全部
model.add(LSTM(units=100,
               return_sequences=False))  # False返回输出序列的最后一个
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')  # 均方误差(Mean Square Error)
model.fit_generator(generator=tg, epochs=30, verbose=2)

"""预测"""
pred_len = 200  # 预测序列长度
for i in range(4):
    x_pred = x[i * batch_size + window: i * batch_size + window + pred_len]
    y_pred = []  # 存放拟合序列
    X_pred = tg[i][0][0]
    for i in range(pred_len):
        Y_pred = model.predict(X_pred.reshape(-1, window, 1))  # 预测
        y_pred.append(Y_pred[0])
        X_pred = np.concatenate((X_pred, Y_pred))[1:]  # 窗口滑动
    mp.scatter(x_pred[0], y_pred[0], c='r', s=9)  # 预测起始点
    mp.plot(x_pred, y_pred, 'r')  # 预测序列
mp.plot(x, y, 'y', linewidth=5, alpha=0.3)  # 原序列
mp.show()

CNN版

import numpy as np, matplotlib.pyplot as mp
from keras.preprocessing.sequence import TimeseriesGenerator
from keras.models import Sequential
from keras.layers import Dense, Conv1D, MaxPool1D, GlobalMaxPool1D

"""配置"""
x_len = 1075
window = 75  # 时序滑窗大小
filters = 64  # 滤波器数量
kernel_size = 9  # 滤波器大小
batch_size = 256
epochs = 99

"""创建样本"""
x = np.linspace(0, np.pi * 10.75, x_len, endpoint=False)
y = np.cos(x).reshape(-1, 1)
tg = TimeseriesGenerator(y, y, length=window, batch_size=batch_size)

"""建模"""
model = Sequential()
model.add(Conv1D(filters, kernel_size, activation='relu', input_shape=(window, 1)))
model.add(MaxPool1D())
model.add(Conv1D(filters, kernel_size, activation='relu'))
model.add(GlobalMaxPool1D())  # 对于时序数据的全局最大池化
model.add(Dense(1))
# 编译、训练
model.compile('adam', 'mse')
model.fit_generator(tg, epochs=epochs, verbose=2)

"""预测"""
pred_len = 200  # 预测序列长度
for i in range(4):
    x_pred = x[i * batch_size + window: i * batch_size + window + pred_len]
    y_pred = []  # 存放拟合序列
    X_pred = tg[i][0][0]
    for i in range(pred_len):
        Y_pred = model.predict(X_pred.reshape(-1, window, 1))  # 预测
        y_pred.append(Y_pred[0])
        X_pred = np.concatenate((X_pred, Y_pred))[1:]  # 窗口滑动
    mp.scatter(x_pred[0], y_pred[0], c='r', s=9)  # 预测起始点
    mp.plot(x_pred, y_pred, 'r')  # 预测序列
mp.plot(x, y, 'y', linewidth=5, alpha=0.3)  # 原序列
mp.show()

示例2:RNN+CNN

import numpy as np, matplotlib.pyplot as mp
from keras.preprocessing.sequence import TimeseriesGenerator
from keras.models import Sequential
from keras.layers import Dense, Conv1D, MaxPool1D, GRU

"""配置"""
x_len = 1075
window = 75  # 时序滑窗大小
filters = 64  # 滤波器数量
kernel_size = 9  # 滤波器大小
units = 64  # RNN神经元数量
batch_size = 256
epochs = 50

"""创建样本"""
x = np.linspace(0, np.pi * 10.75, x_len, endpoint=False)
y = (np.cos(x) + np.cos(x * 10) * .1).reshape(-1, 1)
tg = TimeseriesGenerator(y, y, length=window, batch_size=batch_size)

"""建模"""
model = Sequential()
model.add(Conv1D(filters, kernel_size, activation='relu', input_shape=(window, 1)))
model.add(MaxPool1D())
model.add(Conv1D(filters, kernel_size, activation='relu'))
model.add(GRU(units))  # 门限循环单元网络
model.add(Dense(1))

# 编译、训练
model.compile('adam', 'mse')
model.fit_generator(tg, epochs=epochs, verbose=2)

"""预测"""
pred_len = 200  # 预测序列长度
for i in range(4):
    x_pred = x[i * batch_size + window: i * batch_size + window + pred_len]
    y_pred = []  # 存放拟合序列
    X_pred = tg[i][0][0]
    for i in range(pred_len):
        Y_pred = model.predict(X_pred.reshape(-1, window, 1))  # 预测
        y_pred.append(Y_pred[0])
        X_pred = np.concatenate((X_pred, Y_pred))[1:]  # 窗口滑动
    mp.scatter(x_pred[0], y_pred[0], c='r', s=9)  # 预测起始点
    mp.plot(x_pred, y_pred, 'r')  # 预测序列
mp.plot(x, y, 'y', linewidth=5, alpha=0.3)  # 原序列
mp.show()

在这里插入图片描述

Keras时序数据生成器实战:从原理到LSTM预测 时序数据处理是时间序列预测任务中的关键环节,传统滑动窗口方法需要手动处理数据对齐与维度匹配。Keras TimeseriesGenerator通过自动化样本批次生成,显著提升了数据预处理效率。该工具支持单变量/多变量时序转换,内置标准化处理和步长采样功能,特别适合处理电力负荷、医疗传感器等存在缺失值的场景。结合LSTM等循环神经网络,可以构建端到端的预测模型。在实际工程中,通过调整length、stride等参数控制滑动窗口机制,配合MinMaxScaler实现数据标准化,最终应用于航空乘客预测、多变量能耗 阅读详情

相关推荐

keras数据读取函数

model.fit_generator(self, generator, steps_per_epoch, epochs=1, verbose=1, callbacks=None, validation_data=None, validation_steps=None, class_weight=None, max_q_size=10, workers=1, pickle_safe=False, ...

fuge92的博客 1578

timeseriesgenerator

TimeSeriesGenerator 是一个 Keras 函数,用于生成时间序列数据的批量输入和标签。它可以帮助你轻松地在 Keras 模型中训练时间序列数据。 使用 TimeSeriesGenerator 的一般流程如下: 准备你的时间序列数据,包括输入和标签。 使用 TimeSeriesGenerator 函数将数据转换为批量输入和标签。 在 Keras 模型中使用生成器训练模型。 ...

weixin_42588672的博客 650

Keras深度学习实战(40)——音频生成

随着移动互联网、云端存储等技术的快速发展,包含丰富信息的音频数据呈现几何级速率增长。这些海量数据在为人工分析带来困难的同时,也为音频认知、创新学习研究提供了数据基础。在本节中,我们通过构建生成模型来生成音频序列文件,从而进一步加深对序列数据处理问题的了解。

盼小辉丶的博客 1万+

时间序列生成器(TimeseriesGenerator)

参考How to Use the TimeseriesGenerator for Time Series Forecasting in Keras 时间序列 监督学习时间序列的问题 如何应用TimeseriesGenrator Keras 提供了TimeseriesGenrator 时间序列生成器,它可以用来自动把单序列或者多序列集转换为监督学习问题。 定义一个时间序列生成器 你可以创建一个Se...

花木兰 9240

Keras深度学习实战(22)——生成对抗网络详解与实现

生成对抗网络 (Generative Adversarial Networks, GAN) 使用神经网络生成与原始图像集非常相似的新图像,它在图像生成中应用广泛,且 GAN 的相关研究正在迅速发展,以伪造生成与真实图像难以区分的逼真图像。本节首先介绍了对抗生成网络的基本原理,并使用 Keras 从零开始实现了一个对抗生成网络用于生成手写数字图像。

盼小辉丶的博客 1万+

VESA时序生成器(视频分辨率时序计算器)

1.于ITU官网下载 2.可用于计算自定义分辨率时序

Keras中RNN、LSTM、GRU等输入形状batch_input_shape=(batch_size,time_steps,input_dim)及TimeseriesGenerator详解

最近在使用Keras进行项目实战时,在RNN这块迷惑了,迷惑就是这个输入数据的形状以及如何定义自己的输入数据,因此系统的学习了一下,把学习的总结一下,感觉会有很多人在这里迷惑,如果对你有帮助记得点赞哈。 为了便于大家深入理解batch_input_shape=(batch_size,time_steps,input_dim)的意思,这里我们先从制作数据开始理解,这样效果更好,一旦这个学会,我们就...

进击的菜鸟 1万+

时序图生成器TimeGen

时序图生成利器,再也不用visio或者word画时序图了,特别好用,推荐

keras_5_数据预处理

1. 序列预处理 TimeseriesGenerator 用于生成批量时序数据的实用工具类。这个类以一系列由相等间隔以及一些时间序列参数(例如步长、历史长度等)汇集的数据点作为输入,以生成用于训练/验证的批次数据。 from keras.preprocessing.sequence import TimeseriesGenerator import numpy as np data = np...

weixin_30881367的博客 248

ANSYS Workbench新手避坑:用BEAM188单元模拟工字钢悬臂梁,从建模到后处理完整流程

本文详细介绍了在ANSYS Workbench中使用BEAM188单元模拟工字钢悬臂梁的完整流程,从建模到后处理。重点讲解了如何正确定义工字钢截面、避免单位制和截面方向的常见错误,以及准确解读变形和应力结果。文章还提供了实用技巧和陷阱规避方法,帮助新手工程师快速掌握有限元分析的关键技能。

weixin_27051161的博客 412

海康工业相机使用教程

海康工业相机连接电脑教程

qq_43251445的博客 2万+

TensorFlow:好用的时间序列训练测试集生成器(Python)

TensorFlow:好用的时间序列训练测试集生成器(Python)前言一、tf.keras.preprocessing.sequence.TimeseriesGenerator介绍二、使用步骤1.引入库2.读入数据总结 前言 当我们使用TensorFlow框架搭建时间序列训练模型的时候,如何处理时间序列数据,生成训练集和测试集往往是一个不那么重要但是很麻烦的步骤,很多人选择自己写程序,但是有工具干嘛不用?官方教程使用的是timeseries_dataset_from_array,但是这个是适用Tenso

weixin_43887421的博客 1739

Sciter教程_00_创建HelloWorld工程

本教程记录Sciter工程的创建和编译运行的过程。

qq_36707072的博客 2278

Keras时序数据生成器原理与实战指南

时序数据处理是时间序列预测任务的基础环节,涉及滑动窗口构建、数据标准化和内存优化等关键技术。传统手工处理方法存在内存占用高、时序连续性易破坏等缺陷,而Keras TimeseriesGenerator通过动态批生成策略,实现了70%以上的内存优化,并严格保证数据时序性。该技术特别适用于电力负荷预测、气象数据分析等需要处理多变量、非均匀采样场景的工业应用。生成器层面的实时归一化集成和GPU显存优化技巧,能显著提升LSTM、Transformer等模型的训练效率。针对生产环境中的实时预测需求,合理的delay参

weixin_42524004的博客 308

TOGAF9.2/10 认证基础知识点概览表

(考点解析:业务场景是一种重要的技术,可以在企业架构的各个阶段使用,主要是架构愿景和业务架构,但如果需要,也可以在其他架构域中使用,以直接从业务的高级需求中派生架构的特征。“哪里”可以看作是对相关企业的界定、“为什么”可以被视为组织环境中的关键驱动因素和要素、“谁”是指确定发起人利益相关者和受业务指令影响的其他主要利益相关者,以创建企业架构,并确定他们来自企业的需求和优先级、他们与企业的关系以及彼此之间所需的工作行为。它是业务驱动和业务主导的,它结 合了所有业务线的必要努力,以实现所需的能力。

2302_81497763的博客 2081

Java写项目前的准备工作指南(技术栈选择 环境搭建和工具配置 项目结构设计与模块划分)

在开始编写一个 Java 项目之前,做好充分的准备工作是至关重要的。很多初学者可能在没有清晰规划的情况下就开始编写代码,导致项目开发进度缓慢、结构混乱,甚至最终无法按预期完成。而事实上,项目的成功不仅仅取决于编码能力,还包括项目初期的规划和准备。准备工作是确保项目顺利进行的基础,它包括技术选型、环境搭建、需求分析、团队协作及项目管理等多个方面。通过这些准备,我们可以确保项目的开发不仅高效而且有可维护性,最终能交付出高质量的代码。在项目开发过程中,异常处理是非常关键的一部分。

eternal__day的博客 1188

TanStack Solid Query 的 useInfiniteQuery:无限滚动与分页加载的完整实战指南

`useInfiniteQuery` 是 TanStack Solid Query(`@tanstack/solid-query`)提供的无限查询 Hook,专门用于"加载更多"(分页、游标、无限滚动)场景,例如 Feed 流、聊天记录、商品列表等需要逐页追加数据的界面。它基于 `useQuery` 的全部能力构建,额外引入了页码参数(pageParam)、双向翻页(下一页/上一页)与页数上限(m

gitblog_00685的博客 459

Oracle EBS 寄销/VMI(1)-->基础设置

名词解释:     BPA:一揽子采购协议     BPR:一揽子发放     SR:来源补充规则     ASL:合格供应商列表     VMI: 供应商管理库存     寄售(Consignment)是把货物放在客户那里,客户要用的时候才付款的库存,一般是指卖方把

陈显平的专栏-Oracle EBS 1万+

Keras TimeseriesGenerator时间序列预测实战指南

时间序列预测是机器学习中的经典问题,其核心在于将连续观测数据转换为监督学习可用的样本结构。Keras提供的TimeseriesGenerator通过自动化数据转换过程,显著简化了时间序列建模流程。该工具支持单变量和多变量时间序列处理,能够生成适合LSTM、CNN等深度学习模型的输入输出对。在实际应用中,合理设置滞后观测数量(length)和批次大小(batch_size)等参数对模型性能至关重要。结合MLP和LSTM等神经网络架构,TimeseriesGenerator可广泛应用于金融预测、设备故障预警、销

weixin_30402343的博客 611

深入浅出:使用Python爬取链家二手房数据

在数据驱动的时代,房地产数据作为社会经济的重要指标,一直是数据分析师、投资者和研究人员关注的焦点。链家作为国内领先的房产中介平台,其二手房数据具有较高的真实性和时效性。然而,官方API的访问限制和数据获取的门槛,让很多初学者望而却步。本文将带你从零开始,使用Python编写一个符合robots.txt规范的链家二手房爬虫,获取标题、户型、价格等信息。文章不仅会提供完整代码,还会深入讲解反爬策略、请求头伪装、数据解析、异常处理等实战技术。目录前言:为什么要写这篇博客?一、爬虫前的准备:法律与道德。

2201_76125261的博客 92

摩尔线程嵌入式面试题及参考答案(2万字长文)

说一下你对 drm 框架的理解。 DRM(Direct Rendering Manager)是 Linux 系统中用于管理图形显示设备的一个重要框架。 从架构层面来讲,它处于内核空间,主要目的是为用户空间的图形应用程序提供一个统一的接口来访问图形硬件。DRM 包括内核态的驱动模块和用户态的库。内核态的驱动负责和硬件进行交互,比如对显存的管理、硬件寄存器的配置等。用户态的库则方便应用程序利用内核态提供的功能进行图形渲染等操作。 在图形显示的具体流程中,DRM 可以控制显示设备的分辨率、刷

大模型大数据攻城狮的专栏 1229

LSTM神经网络内存优化终极指南:高效处理大规模时间序列数据的10个技巧

LSTM(长短期记忆网络)是处理时间序列预测的强大工具,广泛应用于股票市场分析、气象预测等领域。本指南将聚焦如何通过优化内存使用,让你的LSTM模型在处理大规模数据时更高效、更稳定。无论你是使用Keras构建模型,还是处理如S&P 500股票数据这样的复杂序列,这些实用技巧都能帮助你突破内存限制,提升训练速度。 ## 1. 动态调整批处理大小:平衡内存与效率 批处理大小(batch size)

gitblog_00823的博客 453

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[深度学习] Keras 如何使用fit和fit_generator

介绍 在本教程中,您将了解Keras.fit和.fit_generator函数的工作原理,包括它们之间的差异。为了帮助您获得实践经验,我已经提供了一个完整的示例,向您展示如何从头开始实现Keras数据生成器。 Keras深度学习库包括可用于训练您自己的模型: .fit .fit_generator 如果你是Keras和深度学习的新手,在试图确定你应该使用哪种函数时,你可能会觉得有点不知所...

摩登都市天空---专栏 9632

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Keras与LSTM在时序预测中的实践指南

时序预测作为数据分析的核心技术,通过挖掘历史数据的时序依赖关系预测未来趋势,在金融、能源、物联网等领域具有广泛应用。传统ARIMA模型在处理非线性、多变量时序数据时存在局限,而基于LSTM的深度学习模型凭借其强大的序列建模能力,能有效捕捉长期依赖关系。Keras框架以其简洁的API和模块化设计,大幅降低了实现LSTM时序预测模型的门槛。通过合理配置滑动窗口、注意力机制等关键技术,配合TensorFlow后端的高效计算,开发者可以快速构建从设备故障预警到销售预测的各种应用。本文基于工业级项目经验,详解如何通过

weixin_31715353的博客 140

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Keras Model类中的fit()与fit_generator()、predict()与predict_generator()

Keras Model类中的fit()与fit_generator()、predict()与predict_generator(),函数详细参数

Explore 8868

tf.keras中model.fit_generator()和model.fit()

首先Keras中的fit()函数传入的x_train和y_train是被完整的加载进内存的,当然用起来很方便,但是如果我们数据量很大,那么是不可能将所有数据载入内存的,必将导致内存泄漏,这时候我们可以用fit_generator函数来进行训练。 fit(x=None, y=None, batch_size=None, epochs=1, verbose=1, callbacks=None, val...

追梦小狂魔的博客 7495
上一篇: Python程序写诗【训练1分钟】古诗生成
下一篇: Python统计分布
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值