基于keras库训练BP神经网络的实例

【python股票价格预测】使用Keras库实现BP神经网络的多变量股票价格预测(附python代码) 阅读详情

写在前面

最近学习了深度学习中最基础的一种神经网络——BP神经网络。经过数学推导之后,我的感悟:

1.BP神经网络是一种对人脑神经网络的一种抽象化的“仿生”。我们知道,人的大脑中有成千上万的神经元,这些神经元本身不复杂,但神经元之间错综复杂的连接使得人脑可以迅速处理信息和学习等。BP神经网络中每个节点都好比一个“神经元”,当INPUT(类比激励)超过一定阈值时,经激活函数计算的OUTPUT达到较高水平(类比神经元兴奋),向输出层传导。

2.BP神经网络本质上是以网络输出与实际输出的误差为评估函数(它是各层权重和偏倚的函数),以各层权重和偏倚为自变量,采用梯度下降法,通过不断迭代改变各层权重和偏倚(也就是训练网络的过程),最终实现误差最小的一种前馈型神经网络。

3.在推导的过程中要多次用到复合函数求导法则。我推导时使用的激励函数是sigmoid函数,它的导数与函数本身有关系,利用这点可以化简结果。

学习了BP神经网络的原理后,我使用python的keras库来训练一个BP神经网络的实例

1.数据集准备

下表由雇员数据库的训练数据组成。数据已泛化,例如,age “31–35"表示年龄在31~ 35之间。对于给定的行,count表示department, status, age和salary在该行具有给定值的元组数。设status是类标号属性。

pic0

1.1数据集生成

import numpy as np
import matplotlib.pyplot as plt
data=np.array([[0,0,2,4,30],
      [0,1,1,0,40],
     [0,1,2,1,40],
     [1,1,0,4,20],
     [1,0,2,5,5],
     [1,1,1,4,3],
     [1,0,4,5,3],
     [2,0,3,4,10],
     [2,1,2,3,4],
     [3,0,5,2,4],
     [3,1,1,0,6]])
data
array([[ 0,  0,  2,  4, 30],
       [ 0,  1,  1,  0, 40],
       [ 0,  1,  2,  1, 40],
       [ 1,  1,  0,  4, 20],
       [ 1,  0,  2,  5,  5],
       [ 1,  1,  1,  4,  3],
       [ 1,  0,  4,  5,  3],
       [ 2,  0,  3,  4, 10],
       [ 2,  1,  2,  3,  4],
       [ 3,  0,  5,  2,  4],
       [ 3,  1,  1,  0,  6]])
#生成训练集和目标
X_train,y_train = data[:,[0,2,3,4]],data[:,1]
X_train
array([[ 0,  2,  4, 30],
       [ 0,  1,  0, 40],
       [ 0,  2,  1, 40],
       [ 1,  0,  4, 20],
       [ 1,  2,  5,  5],
       [ 1,  1,  4,  3],
       [ 1,  4,  5,  3],
       [ 2,  3,  4, 10],
       [ 2,  2,  3,  4],
       [ 3,  5,  2,  4],
       [ 3,  1,  0,  6]])
y_train
array([0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1])

1.2数据标准化

#定义数据处理函数
def stand(a):
    a = a.astype(float)
    max1 = a.max()
    min1 = a.min()
    range1 = max1 - min1
    if range1 == 0:
        return [0]*len(a)
    else:
        for i in range(len(a)):
            a[i] = (a[i] - min1)/range1
        return a    
X_train = X_train.astype(float)
for i in range(len(X_train[0])):
    X_train[:,i] = stand(X_train[:,i])
#标准化后的训练集
X_train
array([[0.        , 0.4       , 0.8       , 0.72972973],
       [0.        , 0.2       , 0.        , 1.        ],
       [0.        , 0.4       , 0.2       , 1.        ],
       [0.33333333, 0.        , 0.8       , 0.45945946],
       [0.33333333, 0.4       , 1.        , 0.05405405],
       [0.33333333, 0.2       , 0.8       , 0.        ],
       [0.33333333, 0.8       , 1.        , 0.        ],
       [0.66666667, 0.6       , 0.8       , 0.18918919],
       [0.66666667, 0.4       , 0.6       , 0.02702703],
       [1.        , 1.        , 0.4       , 0.02702703],
       [1.        , 0.2       , 0.        , 0.08108108]])

2.创建bp神经网络

#导入相关库
from keras.models import Sequential
from keras.layers import Dense, Activation
Using TensorFlow backend.
#生成Sequential 顺序模型
model = Sequential()

#创建两个layer
layer1 = Dense(2, input_shape=(4,),activation='sigmoid')
layer2 = Dense(1,activation='sigmoid')

#使用 .add() 来堆叠模型
#现在模型会以尺寸为 (*, 4) 的数组作为输入,其输出数组的尺寸为 (*, 2)
model.add(layer1)
#在第一层之后,就不再需要指定输入的尺寸了
model.add(layer2)

#使用 .compile() 来配置学习过程
model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])
WARNING:tensorflow:From E:\anaconda\anaconda1\lib\site-packages\tensorflow\python\ops\resource_variable_ops.py:435: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
#查看隐层的初始权重和偏倚
layer1.get_weights()
[array([[-0.47375464, -0.5235982 ],
        [-0.38250756, -0.74181414],
        [-0.2465694 ,  0.55842113],
        [ 0.11825562, -0.3772707 ]], dtype=float32),
 array([0., 0.], dtype=float32)]
#查看输出层的初始权重和偏倚
layer2.get_weights()
[array([[ 0.09723485],
        [-0.49100333]], dtype=float32), array([0.], dtype=float32)]

3.先模拟一下梯度下降法的原理

X0 = np.array([[0.        , 0.4       , 0.8       , 0.72972973]])
y0 = np.array([[0]])
#未训练前先看看输出的结果
model.predict(X0, batch_size=1)
array([[0.45316178]], dtype=float32)
#只用这个样本迭代model一次
model.fit(X0, y0, epochs=1, batch_size=1)
WARNING:tensorflow:From E:\anaconda\anaconda1\lib\site-packages\tensorflow\python\ops\math_ops.py:3066: to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in a future version.
Instructions for updating:
Use tf.cast instead.
Epoch 1/1
1/1 [==============================] - 0s 177ms/step - loss: 0.6036 - accuracy: 1.0000

<keras.callbacks.callbacks.History at 0x1ab3c6be408>
#查看隐层的此时的权重和偏倚
layer1.get_weights()
[array([[-0.47375464, -0.5235982 ],
        [-0.38566962, -0.73865193],
        [-0.24973156,  0.5615834 ],
        [ 0.11509346, -0.37410843]], dtype=float32),
 array([-0.00316219,  0.00316226], dtype=float32)]
#查看输出层的此时的权重和偏倚
layer2.get_weights()
[array([[ 0.09407257],
        [-0.4941656 ]], dtype=float32), array([-0.00316228], dtype=float32)]
#再看看更新后输出的结果
model.predict(X0, batch_size=1)
array([[0.4513354]], dtype=float32)

可以发现此时隐层和输出层的权重和偏倚已经更新(符合用S型激励函数所推导的更新公式),在更新后输出结果由0.45316178变为0.4513354,向着真实值0接近

4.正式训练模型

# 训练模型,以 11个样本为一个 batch 进行迭代,迭代10000次
model.fit(X_train, y_train, epochs=10000, batch_size=11)
#输出最终的损失值和评估值
loss_and_metrics = model.evaluate(X_train, y_train, batch_size=11)
print("loss is",loss_and_metrics[0])
print("metrics is",loss_and_metrics[1])
11/11 [==============================] - 0s 4ms/step
loss is 0.0003669886791612953
metrics is 1.0
#查看隐层的最终的权重和偏倚
layer1.get_weights()
[array([[  1.6629684,  -1.1666613],
        [-10.349615 ,   9.213103 ],
        [ -8.158486 ,   7.631497 ],
        [ -1.920792 ,   1.9880017]], dtype=float32),
 array([ 9.8020735, -9.160663 ], dtype=float32)]
#查看输出层的最终的权重和偏倚
layer2.get_weights()
[array([[ 10.038265],
        [-10.15324 ]], dtype=float32), array([0.28461477], dtype=float32)]
#查看最终收敛后输出的结果
y_predict = model.predict(X_train, batch_size=11)
y_predict
array([[4.1028857e-04],
       [9.9996442e-01],
       [9.9965948e-01],
       [9.9988532e-01],
       [6.3014030e-04],
       [9.9921250e-01],
       [5.5342913e-05],
       [4.4330955e-04],
       [9.9929118e-01],
       [4.7654950e-04],
       [9.9996698e-01]], dtype=float32)

可以看出,输出的结果与真实值之间非常接近,说明模型对这个数据集训练效果较好(但本训练集数据较少且可能存在过拟合情况)

5.初步调参

思考:
1.一开始选择隐层的节点时选择了两个结点,是不是最优选择?
2.迭代次数选择10000是不是最优选择呢?

5.1最优隐层节点数的调整

#将隐层结点设为3个,其余不变
model2 = Sequential()
model2.add(Dense(3, input_shape=(4,),activation='sigmoid'))
model2.add(Dense(1,activation='sigmoid'))
model2.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])
model2.fit(X_train, y_train, epochs=10000, batch_size=11)
loss_and_metrics2 = model2.evaluate(X_train, y_train, batch_size=11)
print("loss is",loss_and_metrics2[0])
print("metrics is",loss_and_metrics2[1])
loss is 6.332933480734937e-06
metrics is 1.0
#将隐层结点设为4个,其余不变
model3 = Sequential()
model3.add(Dense(4, input_shape=(4,),activation='sigmoid'))
model3.add(Dense(1,activation='sigmoid'))
model3.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])
model3.fit(X_train, y_train, epochs=10000, batch_size=11)
loss_and_metrics3 = model3.evaluate(X_train, y_train, batch_size=11)
print("loss is",loss_and_metrics3[0])
print("metrics is",loss_and_metrics3[1])
loss is 5.404044145507214e-07
metrics is 1.0
#绘图
plt.plot([2,3,4],[loss_and_metrics[0],loss_and_metrics2[0],loss_and_metrics3[0]])
plt.xlabel("number of hidden layer nodes")
plt.ylabel("the final loss")
plt.show()

pic1

由图像可知,隐层选择三个节点的效果应该最好,既避免了空间浪费也保证了精度

5.2最优迭代次数的调整

#选择隐层3个节点,将迭代次数调整为5000次,其余不变
model4 = Sequential()
model4.add(Dense(3, input_shape=(4,),activation='sigmoid'))
model4.add(Dense(1,activation='sigmoid'))
model4.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])
model4.fit(X_train, y_train, epochs=5000, batch_size=11)
loss_and_metrics4 = model4.evaluate(X_train, y_train, batch_size=11)
print("loss is",loss_and_metrics4[0])
print("metrics is",loss_and_metrics4[1])
loss is 0.01632225513458252
metrics is 1.0
#选择隐层3个节点,将迭代次数调整为15000次,其余不变
model5 = Sequential()
model5.add(Dense(3, input_shape=(4,),activation='sigmoid'))
model5.add(Dense(1,activation='sigmoid'))
model5.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])
model5.fit(X_train, y_train, epochs=15000, batch_size=11)
loss_and_metrics5 = model5.evaluate(X_train, y_train, batch_size=11)
print("loss is",loss_and_metrics5[0])
print("metrics is",loss_and_metrics5[1])
loss is 1.373911260316163e-07
metrics is 1.0
#绘图
plt.plot([5000,10000,15000],[loss_and_metrics4[0],loss_and_metrics2[0],loss_and_metrics5[0]])
plt.xlabel("number of epochs")
plt.ylabel("the final loss")
plt.show()

pic2

由图像可知,迭代次数选择10000次附近的效果应该较好,如果想要得到更优的epochs可以在10000附近进一步搜索

6.问题解决汇总

 1.运行keras时报错:cudaGetDevice() failed. Status: CUDA driver version is insufficient for CUDA

解决方法:cuda与显卡驱动不匹配,或者使用anaconda安装tensorflow时cudnn、tensorflow-gpu和cudatoolkit版本不匹配。可以降低cudnn和tensorflow-gpu等的版本与显卡驱动匹配。
链接:CUDA工具包和兼容的驱动程序版本
链接:tensorflow-gpu与cuda、cudnn匹配版本

2.numpy数组标准化时全部变为整数,而不是0-1之间的浮点数

解决方法:numpy数组的dtype为int,应该使用array = array.astype(float)将整型数组变为浮点型数组后,再存储标准化后的数据

BP神经网络的Python实现详细指南 误差函数(Error Function),也称目标函数,是衡量神经网络输出与真实值之间差异的函数。在BP神经网络中,误差函数的目的是提供一个衡量标准,用以指导网络权重的调整,使网络输出尽可能接近目标输出。误差函数通常是一个关于网络输出和目标值的数学表达式,它反映了预测值与实际值之间的不一致程度。在实际应用中,误差函数一般选择为均方误差(Mean Squared Error,MSE)或交叉熵损失(Cross-Entropy Loss)。动量法(Momentum) 阅读详情

相关推荐

BP算法神经网络的实现与应用

构建和训练神经网络需要强大的数学运算和优化算法支持。Python神经网络库的选择是至关重要的,下面简要介绍几个流行的库。西瓜数据集(Watermelon Dataset)是一个经典的机器学习数据集,由各类西瓜的属性以及对应的品质标签组成。数据集通常包含多个维度的特征,如色泽、根蒂、敲声等物理属性,以及最终的品质分类(好瓜或坏瓜)。这些特征和分类标签构成了西瓜数据集的核心内容。在实际应用中,西瓜数据集是评估分类算法的常用数据集之一,通过模型对数据进行训练和预测,以判定西瓜是否品质上乘。

weixin_35935514的博客 785

江科大数据挖掘实验三

江科大数据挖掘实验三

qq_53741629的博客 833

R语言实现BP神经网络实战教程

R语言是一种用于统计分析和图形表示的编程语言,广泛应用于数据分析和机器学习领域。它的优点在于拥有庞大的统计分析和数据处理的包,以及直观的图形展示功能。R语言支持多种数据结构,如向量、数组、矩阵、数据框等,这使得它在处理各类数据上具有极大的灵活性。BP神经网络是一种多层前馈神经网络,它的特点是可以自动从输入数据中学习,通过网络内部的层次结构来提取数据特征,并能够处理非线性问题。BP神经网络的主要特点包括:层次结构:BP神经网络通常包含输入层、隐藏层和输出层。隐藏层可以有一个或多个。

weixin_31720909的博客 766

数据挖掘第三版课后题答案

写在前面 该文为数据挖掘概念与技术第三版课后习题的答案,部分参考了第二版的英文答案,由于个人水平有限,如若存在纰漏,请在评论区批评指正。另外,由于本次编辑格式较乱,可在资源下载区下载PDF版本以便参考。 第一章 引论 什么是数据挖掘?在你的回...

sudo_feng的博客 7万+

神经网络:从理论到实践

神经网络(Neural Networks)是一种受人脑启发而构建的信息处理系统,它由大量简单且高度互连的处理单元(神经元)组成。这一理论模型是人工智能研究的核心,能够执行从分类到回归等一系列复杂任务。TensorFlow是一个开源的机器学习框架,由Google大脑团队开发。其核心是一个用于数据流编程的库,特别是可以适用于大规模数值计算的复杂算法。TensorFlow的架构设计非常灵活,提供了丰富的API,允许研究人员和开发者构建和训练各种类型的神经网络模型。

weixin_31869917的博客 759

本博客基于tensorflow2.keras,搭建一个简单的BP网络,用于简单的数据分类任务,并采用粒子群算法实现网络权重

本博客基于tensorflow2.keras,搭建一个简单的BP网络,用于简单的数据分类任务,并采用粒子群算法实现网络权重

贝叶斯分类器(matlab)

目标 下表由雇员数据库的训练数据组成。数据已泛化。例如,age“3135”表示年龄在31~35之间。对于给定的行,count表示department、status、age和salary在该行具有给定值的元组数。 Department Status Age Salary Count Sales Senior 31-35 46K-50K 30 Sales junior 26-30 26K-30K 40 Sales junior 31-35 31K-35K 40 sysytems ju

algorithem的博客 5723

VSCode关联VIVADO编辑Verilog

有时候接手别人的代码,或者从网上找的开源代码,每个人风格不一致,对齐缩进也不一样,阅读起来很累。有没有什么方法能快捷地格式化代码呢。下面我们利用VSCode插件来实现这个需求。Vivado是Xilinx公司提供的逻辑开发平台(之一),如果不喜欢Vivado自带的文本编辑器,可以选择第三方的文本编辑器VSCode。

小王在努力...的博客 7150

下表由雇员数据库的训练数据组成。数据已泛化。例如, age “31..35“表示年龄在31~35之间。对于给定的行, count 表示 de partment , status , age 和 sal

题目: 参考答案:

m0_58606960的博客 969

jaka+realsense+aruco+手眼标定(python)

第二次重建了项目的手眼标定部分……有很多第一次记录遗漏的地方,在此补充。

drivenzyw的博客 2122

从零到一:Livox Mid-360 激光雷达的硬件集成与避坑实战

本文详细介绍了Livox Mid-360激光雷达的硬件集成全流程,包括硬件准备、网络配置、驱动编译和常见问题解决方案。通过实战经验,帮助开发者高效完成从设备拆箱到数据输出的完整链路,避免在IP设置、驱动编译和固件兼容性等环节踩坑。

salt的博客 1028

keras 实现BP神经网络

# -*- coding: utf-8 -*- """ Created on Thu Jul 20 09:59:50 2017@author: Administrator """import pandas as pd inputfile = 'input.xlsx' #excel输入 outputfile = 'output.xls' #excel输出 modelfile = 'modelwei

luoganttcc的博客 1万+

c++通过自然语言处理技术分析语音信号音高

其中,缓冲区大小为2048,最小基频为80Hz,最大基频为1000Hz。通常情况下,音高在85Hz到255Hz之间,因此可以根据实际情况修改最小和最大基频值。C++中可以使用数字信号处理库或语音处理库,比如MATLAB、Praat、YIN算法等等来进行音高分析。对于语音信号的音高分析,可以使用基频提取技术。基频是指一个声音周期的重复率,也就是一个声音波形中最长的周期。通常情况下,人的声音基频范围是85Hz到255Hz。这段代码使用了YIN算法来计算语音信号的基频,得出的结果即为音高。

SYC20110120的博客 1728

BP神经网络及其Python和MATLAB实现预测

BP神经网络(Back Propagation Neural Network),即反向传播神经网络,是一种通过反向传播算法进行监督学习的多层前馈网络。这种网络能够通过不断地调整和改变神经元的连接权重,达到对特定任务的学习和优化。由于其高度的灵活性和适应性,BP神经网络在模式识别、函数逼近、优化问题等多个领域有着广泛的应用。本文将详细介绍BP神经网络的基本原理,并通过Python和MATLAB的示例代码展示其在时间序列预测中的应用。

陈辰学长的博客 1485

微信小程序 - 最新详细实现用户保存下载视频到手机相册,将视频临时路径、在线播放地址(网络路径)URL存储到手机,弹出访问手机相册权限询问,支持视频格式mp4、avi、mov、wmv、flv、webm

微信小程序,视频,手机相册,保存,另存为,小程序保存到相册权限,writePhotosAlbum,一键保存视频到手机相册功能(视频来源为链接),第一次要获取用户授权,授权使用相册权限,小程序视频下载,如何把视频下载到相册,下载一个视频到本地相册,显示下载进度,可取消下载,视频下载到本地,微信小程序视频如何下载,保存视频到相机,页面播放视频并下载到本地,安卓系统,苹果ios保存到相册报错,权限拒绝后打不开,添加相册授权弹框拒绝后再也出不来了,实现保存视频到手机相册功能,将mp4在线视频下载并存储到用户的手机中

🏆 前端领域优质创作者 7623

Openclaw第3章:进阶部署

本章面向需要在特定环境中稳定运行 OpenClaw 的用户,介绍 Windows、Linux、Docker 以及 Cloudflare Workers 四种进阶部署方式。每种方式各有侧重:Windows 部署适合桌面用户日常使用,Linux 部署适合开发者,Docker 部署适合追求环境隔离的运维场景,Cloudflare Workers 部署则适合希望获得全球边缘网络加速的用户。读者可根据自身环境和需求选择合适的方案,完成本章后可继续阅读第4章了解维护升级流程。

Maynor的博客 1295

BP 神经网络在动物行为分析中的应用

随着科技的不断发展,对动物行为的深入研究在生物学、生态学、动物保护等多个领域具有重要意义。本文探讨了 BP 神经网络在动物行为分析中的应用,详细阐述了其原理、数据采集与预处理方法、模型构建与训练过程,并通过实际代码示例展示了如何利用 BP 神经网络对动物行为数据进行分类和预测,为动物行为的精准分析提供了一种有效的技术手段。

梵心白莲的博客 1063

海康VisionMaster与西门子Smart 200进行S7通信

海康VisionMaster与西门子Smart 200进行S7通信

haier123888的博客 8178

写一个bp神经网络做预测的程序

写一个bp神经网络做预测的程序

希望我的博客,能帮上你解决学习中工作中所遇到的问题 754

AI自动化时代:一人公司的崛起与商业机会

AI技术正在重塑商业格局,催生"一人公司"创业新模式。这种轻资产、高效率的商业模式通过AI自动化运营,让个人创业者能以极低成本挑战传统企业。核心机会包括:1)AI自主公司替代人力密集型业务;2)为企业提供AI转型解决方案;3)利用AI工具实现个人创业。创业者需快速验证创意,聚焦人机协作,把握当前AI发展窗口期。未来,AI赋能的"一人公司"将成为商业新常态,带来更高的专业化和灵活性。抓住AI红利,学会人机协作,是个人创业成功的关键。

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 520

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

bp神经网络及ROC曲线绘制

bp神经网络及ROC曲线绘制 首先需要导入要用到的包 from tensorflow import keras import pandas as pd import numpy as np 从文本中读取训练数据 data = pd.read_csv('test.txt', sep='\t') data_train = data.iloc[:500] x_train = np.array(data_train[['title1', 'title2', 'title3', 'title4', 'title5

Q.1的博客 4118

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

写一个用bp神经网络预测风电功率的代码

写一个用bp神经网络预测风电功率的代码

希望我的博客,能帮上你解决学习中工作中所遇到的问题 569

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

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

BP人工神经网络案例

#BP人工神经网络实现 #1.读取数据 #2.导入keras.models Sequential /keras.layers.core Dense,Activation #3.Squential 建立模型 #4.Dense 建立层 #5.Activation激活函数 #6.compile模型编译 #7.fit训练(学习) #8.验证(测试,分类预测) import numpy as np im...

weixin_41789633的博客 1112

Tensorflow.Keras实现mnist手写数字识别并输出预测值**新手向**

1.使用tf.keras.Sequential()搭建一个3层BP神经网络,具体结构如下图: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200309214350163.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNz...

qq_42042199的博客 3180

人工神经网络(ANN)BP算法应用(手写体数字识别部分代码)

人工神经网络在热门的人工智能领域有着很多很好的应用。 在网上也有很多优秀的文章阐述人工神经网络的原理和应用,可以参考以下优秀的文章。 https://blog.youkuaiyun.com/leiting_imecas/article/details/60463897 https://blog.youkuaiyun.com/sinat_36171246/article/details/71056454?locati...

heccxx的博客 3267

matlab程序代编程写做代码图像处理BP神经网络机器深度学习python

以上代码展示了如何使用Python和TensorFlow/Keras来构建和训练一个用于图像分类的BP神经网络。你可以根据自己的需求调整图像尺寸、模型架构、训练参数等。希望这个示例对你有帮助!

matlabgoodboy的博客 696
上一篇: jupyter notebook中修改默认文件路径的一种解决方法
下一篇: 基于卷积神经网络CNN的手写数字识别
AddVH
博客等级 码龄7年 13粉丝 5原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值