网站首页 > 技术文章 正文
AI神经网络是一种模仿生物神经网络结构和功能的计算模型,由大量节点(也称神经元)和连接线构成。每个节点接收到输入信号后,会经过加权计算和激活函数的作用,生成输出信号并传递到下一层节点,依此类推,直到到达输出层。通过学习和训练,AI神经网络可以实现对输入和输出数据之间映射关系的建立和预测。
神经网络进行建模预测通常会经历以下几个过程:
1. 问题分析:明确预测目标,选择合适的数据集,完成数据预处理。
2. 网络构建:确定网络结构,选择输入层、隐藏层和输出层中的节点数量。
3. 参数初始化:初始化网络连接权重和阈值等参数。
4. 前向传播:输入数据经过网络,从输入层到输出层进行计算和转换。
5. 损失计算:计算网络输出结果和真实值之间的损失函数。
6. 反向传播:误差从输出层向输入层回传,更新每层参数来最小化损失。
7. 模型评估:使用验证集评估模型效果,判断模型是否达到预期。
8. 迭代优化:重复训练网络,通过多轮迭代逐步提升性能,避免过拟合。
9. 模型预测:使用测试集对模型进行最终评估,部署模型进行预测。
10. 模型维护:持续优化模型,应对新数据,保证模型性能。
通俗形象理解神经网络CNN数据建模:
数据卷积池化卷积池化扁平化数据全连接训练结果
下面我们一起通过TensorFlow实现CNN,旨在通俗形象的理解TensorFlow框架CNN的工作流程和设计思想:
import numpy as np
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
#封装卷积和池化层函数
def conv2d(x, f):
return tf.layers.conv2d(inputs=x, filters=f, kernel_size=[5, 5],strides=1, padding='SAME')
def max_pool(x):
return tf.layers.max_pooling2d(inputs=x, pool_size=[2,2], strides=2, padding='SAME')
#导入MNIST数据集
mnist = input_data.read_data_sets("MNIST_data", one_hot=True)
#初始化数据
input_x = tf.placeholder(tf.float32, [None, 28*28])/255
output_y = tf.placeholder(tf.int32, [None, 10])
input_x_images = tf.reshape(input_x, [-1, 28, 28, 1])
# 数据集中选取3000个样本
test_x = mnist.test.images[:3000]
test_y = mnist.test.labels[:3000]
# 构建卷积神经网络模型
# 第1层卷积
conv1 = conv2d(input_x_images,32)
# 第 1 层池化
pool1 = max_pool(conv1)
# 第 2 层卷积
conv2 = conv2d(pool1,64)
# 第 2 层池化
pool2 = max_pool(conv2)
# 平坦化
flat = tf.reshape(pool2, [-1, 7 * 7 * 64])
#全链接层
dense = tf.layers.dense(inputs=flat, units=1024, activation=tf.nn.relu)
#丢弃层
dropout = tf.layers.dropout(inputs=dense, rate=0.5)
#全链接层
logits = tf.layers.dense(inputs=dropout, units=10)
#目标函数
loss = tf.losses.softmax_cross_entropy(onehot_labels=output_y, logits=logits)
#优化
train_op = tf.train.AdamOptimizer(learning_rate=0.001).minimize(loss)
#训练数据
accuracy = tf.metrics.accuracy( labels=tf.argmax(output_y, axis=1),
predictions=tf.argmax(logits, axis=1),)[1]
with tf.Session() as sess:
# 初始化全局和局部变量
init = tf.group(tf.global_variables_initializer(), tf.local_variables_initializer())
sess.run(init)
for i in range(200):
batch = mnist.train.next_batch(10)
train_loss, train_op_ = sess.run([loss, train_op],
{input_x: batch[0], output_y: batch[1]})
test_output = sess.run(logits, {input_x: test_x[:20]})
inferenced_y = np.argmax(test_output, 1)
print('预测数字:',inferenced_y)
print("真实数字:",np.argmax(test_y[:20], 1))
猜你喜欢
- 2025-06-08 金母鸡量化教学场:pandas—数据挖掘的Python库
- 2025-06-08 分享一个用于商业决策数据挖掘的python案例
- 2025-06-08 Python图像识别实战(二):批量图像读取和像素转换(附源码)
- 2025-06-08 从小白到大神,这10个超实用的 Python 编程技巧不可少
- 2025-06-08 太震撼!527页战略级Python机器学习实战,实用度碾压群书!附PDF
- 2025-06-08 一篇文章带你解析Python进程(一篇文章带你解析python进程怎么写)
- 2025-06-08 大数据分析师如何进行数据挖掘?大数据分析师丨 2025 年报考攻略
- 2025-06-08 UG编程第34节:浅谈机床坐标系(ug编程机床坐标系细节)
- 2025-06-08 想入门Python?先狠下心来死磕这7个方向
- 2025-06-08 Python大屏看板最全教程之Pyecharts图表
- 265℃Python短文,Python中的嵌套条件语句(六)
- 264℃python笔记:for循环嵌套。end=""的作用,图形打印
- 263℃PythonNet:实现Python与.Net代码相互调用!
- 257℃Python操作Sqlserver数据库(多库同时异步执行:增删改查)
- 257℃Python实现字符串小写转大写并写入文件
- 117℃原来2025是完美的平方年,一起探索六种平方的算吧
- 97℃Python 和 JavaScript 终于联姻了!PythonMonkey 要火?
- 90℃Ollama v0.4.5-v0.4.7 更新集合:Ollama Python 库改进、新模型支持
- 最近发表
-
- 金母鸡量化教学场:pandas—数据挖掘的Python库
- 分享一个用于商业决策数据挖掘的python案例
- Python图像识别实战(二):批量图像读取和像素转换(附源码)
- 从小白到大神,这10个超实用的 Python 编程技巧不可少
- 太震撼!527页战略级Python机器学习实战,实用度碾压群书!附PDF
- 一篇文章带你解析Python进程(一篇文章带你解析python进程怎么写)
- 大数据分析师如何进行数据挖掘?大数据分析师丨 2025 年报考攻略
- UG编程第34节:浅谈机床坐标系(ug编程机床坐标系细节)
- 想入门Python?先狠下心来死磕这7个方向
- Python大屏看板最全教程之Pyecharts图表
- 标签列表
-
- python中类 (31)
- python 迭代 (34)
- python 小写 (35)
- python怎么输出 (33)
- python 日志 (35)
- python语音 (31)
- python 工程师 (34)
- python3 安装 (31)
- python音乐 (31)
- 安卓 python (32)
- python 小游戏 (32)
- python 安卓 (31)
- python聚类 (34)
- python向量 (31)
- python大全 (31)
- python次方 (33)
- python桌面 (32)
- python总结 (34)
- python浏览器 (32)
- python 请求 (32)
- python 前端 (32)
- python验证码 (33)
- python 题目 (32)
- python 文件写 (33)
- python中的用法 (32)