TensorFlow【极简】序列预测

Tensorflow构建RNN做时间序列预测(一)   最近比较空闲,刚好学习下Tensorflow和python,于是想写一个Tensorflow的小应用。 时间序列预测在预估企业营收,指标等方面使用的非常多。以前用R写过一个shiny的应用,就是用指数平滑、stl分解等方法做时间序列预测。RNN也是很早之前就接触过理论,是用来处理序列数据的利器。放一个普通RNN的示意图:   可以看到,t时刻RNN单元的输出是由t-1时刻单元的输出... 阅读详情

余弦曲线拟合效果

极简代码

一维卷积

import numpy as np, matplotlib.pyplot as mp
import tensorflow as tf

"""创建样本"""
x_len = 1075
x = np.linspace(0, np.pi * 10.75, x_len, endpoint=False)
y = np.cos(x)
window = 75  # 时序滑窗大小
X = [y[i: i + window] for i in range(x_len - window)]
X = np.reshape(X, (-1, window, 1))  # shape (1000, 75, 1)
Y = y[window:].reshape(-1, 1)  # shape (1000, 1)

"""建模"""
# 输入
h_x = tf.placeholder('float', [None, window, 1])
h_y = tf.placeholder('float', [None, 1])
# 卷积(木有池化)
W_conv = tf.Variable(tf.truncated_normal([10, 1, 40], stddev=0.1))  # [卷积长度、通道数、filter数]
b_conv = tf.Variable(tf.constant(.1, shape=[40]))  # [filter数]
h_conv = tf.nn.conv1d(value=h_x, filters=W_conv, stride=1, padding='VALID') + b_conv  # 滑窗步幅:1
h_relu = tf.nn.relu(h_conv)  # ReLU激活
# 平化
h_flat = tf.reshape(h_relu, [-1, (75 - 10 + 1) * 40])
# 全连接1
W_fc1 = tf.Variable(tf.truncated_normal([(75 - 10 + 1) * 40, 1], stddev=.1))
b_fc1 = tf.Variable(tf.constant(.1, shape=[60]))
h_fc1 = tf.matmul(h_flat, W_fc1) + b_fc1
h_fc1 = tf.nn.relu(h_fc1)
# 全连接2
W_fc2 = tf.Variable(tf.truncated_normal([60, 1], stddev=.1))
b_fc2 = tf.Variable(tf.constant(.1, shape=[1]))
h_fc2 = tf.matmul(h_fc1, W_fc2) + b_fc2
# 损失:均方误差
loss = tf.losses.mean_squared_error(h_fc2, h_y)
# Adam优化器
optimizer = tf.train.AdamOptimizer().minimize(loss)

"""训练"""
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
batch_size = 100
for e in range(600):  # 总训练次数
    loss_ls = []
    for i in range(0, x_len, batch_size):
        Xi = X[i: i + batch_size]
        Yi = Y[i: i + batch_size]
        optimizer.run({h_x: Xi, h_y: Yi}, sess)
        loss_ls.append(loss.eval({h_x: Xi, h_y: Yi}, sess))
    print('epoch:', e, 'loss:', np.mean(loss_ls))

"""预测"""
pred_len = 150  # 预测序列长度
for start in range(0, 1000, 200):
    x_pred = x[window + start: window + start + pred_len]
    y_pred = []  # 存放拟合序列
    X_pred = X[start]
    for i in range(pred_len):
        Y_pred = h_fc2.eval({h_x: X_pred.reshape(-1, window, 1)}, sess)  # 预测值
        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()

GRU

import numpy as np, matplotlib.pyplot as mp
import tensorflow as tf
from tensorflow.contrib.rnn import GRUCell

"""配置"""
x_len = 1075
window = 75  # 时序滑窗大小
num_units = 50  # RNN神经元数量
batch_size = 1

"""创建样本"""
x = np.linspace(0, np.pi * 10.75, x_len, endpoint=False)
y = np.cos(x)
X = [y[i: i + window] for i in range(x_len - window)]
X = np.reshape(X, (-1, window))  # shape (1000, 75)
Y = y[window:].reshape(-1, 1)  # shape (1000, 1)

"""建模"""
# 输入
h_x = tf.placeholder('float', [batch_size, window])
h_y = tf.placeholder('float', [batch_size, 1])
# RNN
rnn_cell = GRUCell(num_units)
state = rnn_cell.zero_state(batch_size, tf.float32)
h, state = rnn_cell(h_x, state)
# 全连接
W = tf.Variable(tf.truncated_normal([num_units, 1], stddev=.1))
b = tf.Variable(tf.constant(.1, shape=[1]))
o = tf.matmul(h, W) + b  # output

# 损失:均方误差
loss = tf.losses.mean_squared_error(o, h_y)
# Adam优化器
optimizer = tf.train.AdamOptimizer(1e-4).minimize(loss)

"""训练"""
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
for e in range(6):  # 总训练次数
    loss_ls = []
    for i in range(0, x_len - window, batch_size):
        Xi = X[i: i + batch_size]
        Yi = Y[i: i + batch_size]
        optimizer.run({h_x: Xi, h_y: Yi}, sess)
        loss_ls.append(loss.eval({h_x: Xi, h_y: Yi}, sess))
    print('epoch:', e, 'loss:', np.mean(loss_ls))

"""预测"""
pred_len = 150  # 预测序列长度
for start in range(0, x_len - window, 200):
    x_pred = x[window + start: window + start + pred_len]
    y_pred = []  # 存放预测序列
    X_pred = X[start]
    for i in range(pred_len):
        Y_pred = o.eval({h_x: X_pred.reshape(1, window)}, sess)[0]
        y_pred.append(Y_pred)
        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()

附录

TensorFlow【CNN】基础补充
TensorFlow【RNN】基础补充

时间序列预测方法之 DeepAR 最近打算分享一些基于机器学习的时间序列预测方法。这是第一篇。 DeepAR 是 Amazon 于 2017 年提出的基于深度学习的时间序列预测方法,目前已集成到 Amazon SageMaker 和 GluonTS 中。前者是 AWS 的机器学习云平台,后者是 Amazon 开源的时序预测工具库。 传统的时间序列预测方法(ARIMA、Holt-Winters’ 等)往往针对一维时间序列本身建模,... 阅读详情

相关推荐

代码详解:以股票预测为例,揭秘时间序列预测

全文共4109字,预计学习时长8分钟 从在线API中提取股票价格数据,使用配备有TensorFlow.js框架的递归神经网络和长期短期记忆(LSTM)执行预测。 机器学习近年来深受欢迎,越来越多的人把它当作一个能够预测未来时间和特定事件的神奇水晶球。该实验使用人工神经网络揭示股市走势,揭示了使用过去的历史数据来预测未来股票价格的能力,即时间序列预测能力。 注意!!...

读芯术的博客 1万+

TensorFlow学习

TensorFlow学习。

qq_50665031的博客 426

TensorFlow【极简】入门代码

文章目录变量初始化线性回归逻辑回归多层感知机 变量初始化 tf中所有的变量必须经过初始化才能使用 sess = tf.Session() init = tf.global_variables_initializer() sess.run(init) import tensorflow as tf # 创建tf格式的变量 a = tf.Variable([[1], [2]]) b = tf.V...

ArYe 3904

python训练模型 c语言调用_在 C/C++ 中使用 TensorFlow 预训练好的模型—— 直接调用 C++ 接口实现...

现在的深度学习框架一般都是基于 Python 来实现,构建、训练、保存和调用模型都可以很容易地在 Python 下完成。但有时候,我们在实际应用这些模型的时候可能需要在其他编程语言下进行,本文将通过直接调用 TensorFlow 的 C/C++ 接口来导入 TensorFlow 预训练好的模型。2. 导入预定义的图和训练好的参数值// set up your input pathsconst st...

weixin_42301367的博客 1145

如何用TensorFlow预测时间序列:TFTS库详细教程

前言如何用TensorFlow结合LSTM来做时间序列预测其实是一个很老的话题,然而却一直没有得到比较好的解决。如果在Github上搜索“tensorflow time series”,会发现star数最高的tgjeon/TensorFlow-Tutorials-for-Time-Series已经和TF 1.0版本不兼容了,并且其他的项目使用的方法也各有不同,比较混乱。在刚刚发布的TensorFl...

优快云 人工智能 2425

AI模型设计:完美实现C语言调用python训练的tensorflow2.5-gpu循环神经网络模型并进行预测

ck:AI模型设计:C语言版 TensorFlow2.x安装与使用 train.py: import numpy as np import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers, Sequential from tensorflow.keras.layers import Dense, LSTM, InputLayer, Bidirectional, TimeDistributed,

源代码杀手的博客 2668

tensorflow用c语言,Tensorflow C API 从训练到部署:使用 C API 进行预测和部署

前述博文 Tensorflow C++ 从训练到部署(2):简单图的保存、读取与 CMake 编译 和 Tensorflow C++ 从训练到部署(3):使用 Keras 训练和部署 CNN 使用 Tensorflow/Keras 的 Python API 进行训练,并使用 C++ API 进行了预测。由于 C++ API 需要编译 Tensorflow 源码,还是比较麻烦的。而 Tensorfl...

weixin_34732771的博客 1457

磁栅尺的基本原理

一、磁栅尺简介 磁栅尺(Magnetic scale)是一种常见于工业自动化设备领域的线性位移测量方案,因为其耐用性强,对环境要求不高,逐渐替代了对环境要求苛刻的光学直线测量方案。 作为自动化设备领域里不多见的精密位移检测方案,磁栅尺使用广泛,尤其适用于检测行程长、测量精度要求高、工况复杂的大型机床。磁栅尺安装方便,抗干扰能力强,抗冲击性强,不易受到振动、粉尘、水垢、油污等影响,耐高温和耐低温性能也较为突出。 二、磁栅尺基本组成与原理 磁栅尺主要由两个部分组成,磁尺和读磁头。 磁尺 磁尺是磁栅尺

Luckboy_shy的博客 1万+

如何使用Tensorflow建立神经网络并且预测

我总结的建立神经网络的具体步骤,和一些细节,以及提供案例仅供参考可以通过增多神经网络的层数,每一次的神经元,调整lambada参数,来让神经网络的预测更加的准确通过观察训练集的误差和交叉验证集的误差,如果大概相等且很小,那么恭喜!你的模型训练的很好了!

m0_51758196的博客 1836

AI Agent核心架构解析:从Tool、Skill到MCP协议的智能体构建实战

在人工智能领域,大语言模型(LLM)赋予了AI自主规划与决策的能力,推动了智能体(Agent)技术的演进。其核心原理在于构建一个具备感知、规划、行动与反思能力的自主系统。这一架构的技术价值在于将AI从被动应答升级为主动执行复杂任务的工作伙伴,显著提升了自动化水平与问题解决效率。应用场景广泛覆盖了市场分析、自动化办公、智能客服与垂直领域集成等。本文聚焦于实现这一能力的关键组件:基础工具(Tool)、组合技能(Skill)与标准化协议(MCP)。其中,Skill通过封装多个Tool形成可复用的高级能力,而MCP

chuannaoxuan4674的博客 323

Infineon MOSFET开关损耗计算实战指南

本文是英飞凌MOSFET开关损耗计算的实战指南。针对MOSFET发热问题,文章深入剖析了开关损耗的产生机理,并基于Infineon数据手册的关键参数,手把手推导了开通与关断损耗的工程计算公式。同时,指南强调了栅极电阻、寄生参数等实际因素对损耗的影响,并提供了从理论计算到实测优化的完整路径,帮助工程师精准评估与优化电源设计。

weixin_29212867的博客 447

从零手写SimpleRNN循环神经网络(附完整代码+详细注释+逐行原理解析)

循环神经网络(RNN)是处理时序序列数据的经典基础模型,广泛应用于文本生成、序列预测、语音识别、时间序列预测等任务。相比于CNN专注于空间特征提取,RNN通过隐藏状态传递历史信息,具备记忆时序信息的能力。市面上多数RNN教程基于PyTorch/TensorFlow框架封装好的接口,新手很难理解RNN核心的前向传播、反向传播(BPTT)原理。本文将纯NumPy手写极简SimpleRNN。

m0_64476639的博客 333

告别误唤醒!S32K3xx低功耗设计避坑指南:Fast Standby模式与WISR寄存器操作详解

本文深入解析了NXP S32K3xx系列MCU在低功耗设计中常见的误唤醒问题,并提供了基于Fast Standby模式的解决方案。文章重点剖析了DCMRWF5寄存器的配置方法、WISR/WISR_64唤醒中断状态寄存器的标志位处理策略,以及如何利用32KB Standby SRAM保存唤醒状态,从而帮助开发者构建稳定可靠的汽车电子低功耗系统。

weixin_29163857的博客 365

Tensorflow2.0之时间序列预测

文章目录项目介绍Tensorflow实现1、导入需要的库2、引入数据集3、划分特征和标签、建模预测3.1 用单变量预测一个未来时间点3.1.1 取出只含温度的数据集3.1.2 温度随时间变化绘图3.1.3 将数据集转换为数组类型3.1.4 标准化3.1.5 写函数来划分特征和标签3.1.6 从数据集中划分特征和标签3.1.7 设置绘图函数3.1.8 绘制第一个样本的特征和标签3.1.9 将特征和标...

cocofisher的博客 1万+

PLC编程进阶:结构体(UDT)与功能块(FB)的模块化实践指南

本文深入探讨了PLC编程中实现模块化的核心方法,重点解析了结构体(UDT)与功能块(FB)的协同应用。通过将零散数据封装为UDT,并将控制逻辑打包为可复用的FB,能够构建出结构清晰、易于维护和调试的PLC程序。文章结合拧紧枪、电机控制等实战案例,提供了从设计原则到分层架构的完整实践指南,旨在帮助工程师将混乱的‘面条式’代码改造为高效的‘正规军’。

s3t4u的博客 222

DSSAD自动驾驶行车记录系统体系结构和应用

通过对其感知、决策、控制等模块的详细研究,以及对商业化和消费市场发展趋势的分析,为该领域的研究和实践提供有价值的参考。通过克服技术、安全与隐私、法规与政策等方面的挑战,并紧跟人工智能、云端服务、用户体验等发展趋势,DSSAD系统将更好地适应自动驾驶行业的发展,提供更安全、智能、便捷的驾驶辅助服务。DSSAD体系结构通过数据收集模块、加密链接和数据存储模块和数据读取模块等关键模块的协同作用,构建了一个强大而灵活的自动驾驶数据记录系统,为未来智能出行提供了坚实的技术基础。

一只老虎的专栏 2208

TensorFlow搭建LSTM实现时间序列预测(负荷预测)

TensorFlow搭建LSTM实现时间序列预测(负荷预测)

KI的博客 7105

【QT/C++】事件过滤器之基于重写 eventFilter 方法的多种常见应用场景及实现

Qt事件过滤器通过重写eventFilter方法实现多种实用功能:1)鼠标事件处理(点击全选文本、禁用滚轮、悬停提示);2)键盘事件处理(输入内容限制、快捷键提交);3)焦点事件处理(自动弹出下拉框、实时验证);4)绘图事件处理(自定义控件绘制);5)窗口事件处理(防止意外关闭、尺寸限制)。事件过滤器提供非侵入式的事件处理方案,相比传统子类化方式更灵活,通过installEventFilter安装到目标控件即可实现各种交互增强功能。

yuhuasheng1997的博客 1484

【数值预测案例】(3) LSTM 时间序列电量预测,附Tensorflow完整代码

大家好,今天和各位分享一下如何使用循环神经网络STLM完成时间序列预测,本文是针对单个特征的预测,下一篇是对多个特征的预测。文末有完整代码 1. 导入工具包 这里使用GPU加速计算,加快网络的训练速度。 import tensorflow as tf from tensorflow import keras import numpy as np import pandas as pd import matplotlib.pyplot as plt import warnings warnings.f

博观而约取,厚积而薄发 1万+

57. SAP UI5 应用基于 OData 注解的 Smart Field 使用方法学习

所谓 SAP UI5 Smart Field,顾名思义,是一类比较`智能`的控件,这类控件同 SAP UI5 传统的控件不同,会根据 SAP UI5 应用程序连接的 OData 服务中元数据里提供的注解(`annotations`),在运行时动态生成底层的 SAP UI5 控件。...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2774

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

tensorflow下用LSTM网络进行时间序列预测

引言: 最近,一直在看关于时间序列预测这一方面的东西。在这里总结一下: 1.时间序列分析常用的模型有AR,MA,ARIMA,以及RNN和LSTM 2.大多数预测模型都能做时间序列分析(主要是如何将已知问题转化为带有时间戳的序列问题) 参考:如何将时间序列转换为Python中的监督学习问题(1) 3.我们常说的预测我总结出来有两层含义: (1)目前我查资料遇到最多的“预测”:实际上就是做...

真梦行路的博客 2万+

IMSL CNL 7.0.0 (x86-64)Crack

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

TensorFlow实现时间序列预测

  常常会碰到各种各样时间序列预测问题,如商场人流量的预测、商品价格的预测、股价的预测,等等。TensorFlow新引入了一个TensorFlow Time Series库(以下简称为TFTS),它可以帮助在TensorFlow中快速搭建高性能的时间序列预测系统,并提供包括AR、LSTM在内的多个模型。 时间序列问题   一般而言,时间序列数据抽象为两部分:观察的时间...

凌逆战的博客 6824

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

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...

TensorFlow搭建CNN-LSTM混合模型实现多变量多步长时间序列预测(负荷预测)

TensorFlow搭建CNN-LSTM混合模型实现多变量多步长时间序列预测(负荷预测)

KI的博客 1万+

基于tensorflow的LSTM 时间序列预测模型

时间序列预测(曲线回归或曲线拟合),结构为训练数据生成-》隐藏输入层-》LSTM神经层-》隐藏输入层-》结果,也可以采用LSTM神经层-》全连接层(多层的普通神经网络)构成,训练效果未对比,与参数调优相关。 参数说明:TIME_STEPS:RNN训练的步数,一次训练输入的序列长度;INPUT_SIZE:输入序列中,单个输入的维度,用于曲线拟合或者回归的话,维度即为1;BATCH_SIZE:训练的批...

学习笔记 7615

使用 Tensorflow LSTM 进行时间序列预测

我们可以观察到,每次迭代或 epoch 的损失都会减少,有趣的是,我们的模型只经历了 8 个 epoch,即使我们要求模型运行 50 个 epoch。由于时间序列数据已经是连续测量的序列,按时间顺序索引,即数据是确定的、连续的和周期性的,非常适合 LSTM 网络学习并为时间顺序中的未来连续趋势提供预测。如果模型不能提供良好的预测,我们需要尝试一些不同的方法,例如数据缩放、数据转换、使用更多 LSTM 或密集层或调整其他超参数。时间序列数据,也称为时间戳数据,是按时间顺序索引的数据点序列。

xiaoshun007的专栏 3774

TensorFlow搭建双向LSTM实现时间序列预测(负荷预测)

TensorFlow搭建双向LSTM实现时间序列预测(负荷预测)

KI的博客 4542
上一篇: Python【极简】搜索引擎+倒排索引
下一篇: 中国省市经纬度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、付费专栏及课程。

余额充值