传统BP vs CNN

传统BP vs CNN

存在2个问题

传统BP网络存在的问题:
1.权值太多,计算量太大
2.权值太多,需要大量样本进行训练

这里写图片描述

传统的BP来处理图像问题的话因为计算权值太多太大。

网络的建立要根据数据的大小来建立。
求解权值得过程类似于求解方程组的过程,有1亿个权值要多少个数据量要多少样本?
最好是权值得5-30倍。 一般说来数据量越大越好。

CNN的崛起

感受野

CNN的牛逼之处在于通过感受野和权值共享减小了神经网络需要训练的参数个数。
这里写图片描述

权值共享

这里写图片描述

权值是共享的:区域大小都是一样的,权值都是一样的

这里写图片描述

存在问题-解决方案

存在的问题:
1.边缘过度不平滑(重采样的方法来解决这个问题)
2.滤波器太单一(采集图片的一些特征,不同的滤波器采集不同的特征)

### 时间序列预测中的BP神经网络 BP(Back Propagation)神经网络是一种多层前馈人工神经网络,通过反向传播算法调整权重来最小化误差。对于时间序列预测而言,BP神经网络能够捕捉输入变量之间的复杂非线性关系。 尽管如此,传统BP神经网络存在一些局限性,比如容易陷入局部最优解以及收敛速度较慢等问题[^1]。为了克服这些缺点,在实际应用中通常会采用改进措施或与其他优化算法相结合的方式提升性能。例如,可以利用遗传算法(GA)对初始权值进行优化从而改善BP网络的学习效率泛化能力[^2]。 #### BP神经网络的时间序列预测实现流程 以下是基于MATLAB平台的一个简单示例代码片段用于展示如何构建并训练一个基本的BP神经网络来进行温度数据预测: ```matlab % 加载样本数据集 load simple_dataset.mat; % 假设simple_dataset包含了历史气温记录作为训练集 % 创建三层BP神经网络结构 (输入层节点数=特征维度, 隐藏层数目可根据需求设定) net = fitnet([10]); % 设置训练参数 net.trainParam.epochs = 1000; net.divideParam.valRatio = 0; % 训练模型 [net,tr] = train(net,x_train,y_train); % 测试模型效果 y_pred = net(x_test); plot(y_test,'r'); hold on; plot(y_pred,'b'); legend('真实值','预测值') ``` 此段代码展示了创建、配置、训练及评估一个简单的BP神经网络的过程。需要注意的是,这里仅提供了一个非常基础的例子;针对具体应用场景可能还需要进一步调参以获得更好的表现。 --- ### 卷积神经网络(CNN)应用于时间序列预测 卷积神经网络最初被设计用来处理图像识别任务,但近年来也被广泛应用于一维信号如语音波形或是像股票价格这样的时间序列分析当中。相比于传统的全连接型DNNs,CNN具备更少数量级可调节参数的同时还能有效提取局部模式特征,这使得它特别适合于处理长时间跨度的数据流。 当涉及到时间序列预测时,可以通过滑动窗口机制将原始序列转换成二维矩阵形式供后续操作使用。下面给出一段Python伪代码说明这一过程: ```python import numpy as np def sliding_window(data, window_size): X = [] y = [] for i in range(len(data)-window_size-1): _X = data[i:(i+window_size)] _y = data[i+window_size] X.append(_X) y.append(_y) return np.array(X), np.array(y) # 构建CNN架构 from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv1D, MaxPooling1D, Flatten, Dense model = Sequential() model.add(Conv1D(filters=64, kernel_size=3, activation='relu', input_shape=(n_timesteps,n_features))) model.add(MaxPooling1D(pool_size=2)) model.add(Flatten()) model.add(Dense(50, activation='relu')) model.add(Dense(n_outputs)) # 编译模型 model.compile(loss='mse', optimizer='adam') # 准备训练测试集... [X_train, Y_train], [X_val, Y_val] = prepare_data() history = model.fit(X_train, Y_train, epochs=epoche_num, batch_size=batch_sz, validation_split=val_ratio) ``` 上述代码定义了一种典型的一维卷积神经网络框架,并介绍了怎样准备适用于此类模型的时间序列数据。值得注意的是,由于不同领域内所面临的具体问题差异较大,因此在实践中往往需要根据实际情况灵活调整网络拓扑结构及其超参数设置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值