DAY12 Tensorflow 六步法搭建神经网络

六步法:

一.import

导入各种库,比如:

python 复制代码
import tensorflow as tf
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras import Model
import numpy as np
import pandas as pd
# 可能还会根据需求导入其他库,如用于数据可视化的 matplotlib 等
import matplotlib.pyplot as plt

二.train,test

准备训练数据和测试数据,比如:

python 复制代码
# 以 MNIST 数据集为例
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# 数据预处理
x_train, x_test = x_train / 255.0, x_test / 255.0

首先,从相应的数据集中加载数据,如这里使用 mnist.load_data() 加载 MNIST 手写数字数据集,得到训练集的特征 x_train 和标签 y_train,以及测试集的特征 x_test 和标签 y_test。然后,对数据进行预处理,常见的预处理操作包括归一化、标准化等。在上述代码中,将图像像素值除以 255,将其缩放到 0 到 1 的范围,这有助于模型的训练和收敛。

三.model=tf.keras.models.Sequential

构建模型架构,比如:

python 复制代码
model = tf.keras.models.Sequential([
    Flatten(input_shape=(28, 28)),
    Dense(128, activation='relu'),
    Dense(10, activation='softmax')
])

四.model.compile

配置模型训练过程,比如:

python 复制代码
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

这一步用于配置模型的训练过程,主要设置三个重要参数:

optimizer:优化器,用于调整模型的参数以最小化损失函数。adam 是一种常用的优化器,它结合了 AdaGrad 和 RMSProp 的优点,具有自适应学习率的能力。

loss:损失函数,用于衡量模型预测结果与真实标签之间的差异。其中sparse_categorical_crossentropy 适用于标签为整数编码的多分类问题。

metrics:评估指标,用于在训练和测试过程中监控模型的性能。accuracy 表示准确率,即模型预测正确的样本数占总样本数的比例。

五,model.fit

进行模型训练,使用训练模型进行迭代训练。

python 复制代码
model.fit(x_train, y_train, epochs=5)

六,model.summary

这一步用于打印模型的结构信息,包括每一层的名称、输出形状和参数数量等。通过查看 model.summary() 的输出,你可以了解模型的整体架构和参数规模,帮助你检查模型是否符合预期,以及评估模型的复杂度。

python 复制代码
model.summary()

各自的使用方法:

Flatten只是把数值特征拉成一维数组

Dense全连接

后面是卷积神经网络层和循环神经网络层

compile配置训练方法。

validation_data和validation_split二选一,进行训练。

validation_freq 多少轮训练后用测试集测试一次。

model.summary()打印出统计结果,其中可以看到,总共的参数15个,可训练参数15个,不可训练参数0个。

以下是用六步法搭建鸢尾花分类。

python 复制代码
import tensorflow as tf
from sklearn import datasets
import numpy as np

x_train = datasets.load_iris().data
y_train = datasets.load_iris().target

np.random.seed(116)
np.random.shuffle(x_train)
np.random.seed(116)
np.random.shuffle(y_train)
tf.random.set_seed(116)

model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())
])

model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=['sparse_categorical_accuracy'])

model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)

model.summary()

首先import,然后两个train交代训练集和测试集。

np到tf这几个random用于打乱数据集设置。

model中设置网络结构。3指的是神经元个数是3,activation选用激活函数,最后是选用正则化方法。

complie中配置训练方法,SGD优化器,学习率0.1,选用SparseCategoricalCrossentropy当做损失函数,由于神经末端使用softmax函数,输出不是原始分布,所以logits=False。

鸢尾花数据集给的是0,1,2是数值,神经网络前向输出是概率分布,选择sparse_categorical_accuracy作为测评指标。

fit中执行训练过程,分别是 输入特征,训练集标签,训练时一次喂给神经网络多少组数据batch_size,循环迭代次数,validation_split=0.2告知从训练集中选择百分之20数据当做测试集,validation_freq=20,表示迭代20次,在测试集中验证一次准确率。

运行结果:

可见,打印出了网络结构和参数统计。

相关推荐
天国梦4 分钟前
同步课本单词APP怎么选?实测3款才知道真实差距
人工智能·机器学习
昇腾CANN5 分钟前
9月14日直播丨人芯对话:昇腾950算力落地算子的编程范式探索
人工智能·昇腾·cann·cann开源
lucas_AI11 分钟前
TableParseMap:榜单 93 分的表格解析,真实复杂表格只有 85 分
人工智能
还是奇怪12 分钟前
OpenAI GPT-5.6 构建指南拆解:创业公司如何用模型选择与 Responses API 降低 Agent 成本
java·数据库·人工智能·gpt
代码Plato13 分钟前
CLAUDE.md 编写简明指南
人工智能
sarasuki15 分钟前
Agent 陷入死循环了怎么办?指纹 + 滑动窗口 + 分层熔断
人工智能·ai编程
长谷深风11119 分钟前
支付审批的智能风险控制设计
大数据·人工智能·ai·大模型·支付·aiagent·hitl
来让爷抱一个20 分钟前
2026 CFG引导实战:八帧跳跃不许跑偏,百智云精灵图把条件契约写进素材包
人工智能·机器学习
超人气王22 分钟前
细说agent心跳机制--agentLoop循环机制中死循环处理,带你进一步了解agent工作底层原理
javascript·人工智能
四点半-企业AI获客22 分钟前
AI搜索引用机制拆解:从抓取、解析到引用打分的完整链路
人工智能·geo·rag·ai搜索·搜索引擎优化