tensorflow学习笔记(2)------北京大学 曹健

本文是关于使用TensorFlow进行鸢尾花分类的实践笔记,内容包括数据预处理、网络搭建、参数优化及效果测试。通过乱序数据、划分训练集和测试集,构建神经网络模型,并对准确率和损失进行可视化展示。
摘要由CSDN通过智能技术生成

神经网络实现鸢尾花的分类

准备数据

数据集的读入

from sklearn import datasets
x_data = datasets.load_iris().data  # 返回输入特征
y_data = datasets.load_iris().target  # 返回标签

视频中有的代码是有问题的,但是他给的文档的代码没问题。

数据集乱序

# 打乱数据特征和标签
np.random.seed(116)
np.random.shuffle(x_data)
np.random.seed(116)
np.random.shuffle(y_data)
np.random.seed(116)

116 是随机因子,为了让标签和特征随机的规律一致,当然设置其他数字也行,但保证代码所有的数字也跟着变。

生成训练集和测试集

# 分出训练集和测试机
x_train = x_data[:-30]
y_train = y_data[:-30]
x_test = x_data[-30:]
y_test = y_data[-30:]

分出前30做测试集,后面的当训练集。

配成(输入特征和标签的配对)

配对

# 配对
train_db = tf.data.Dataset.from_tensor_slices((x_train, y_train)).batch(32)
test_db = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(32)

将训练集特征和标签打包,每32个数据当做一步输入神经网络。(batch后的数字最好是2的倍数)

搭建网络

# 搭建网络结构
w1 = tf.Variable(tf.random.truncated_normal([4, 3], stddev=0.1, seed=1))
b1 = tf.Variable(tf.random.truncated_normal([3], stddev=0.1, seed=1))

由于输入特征是四个,分类是三个,所以构建4行3列的张量。stddev作为正态分布(truncated)的标准差,seed表示的是random的随机因子(实际上这个加不加无所谓)。

参数优化

# 迭代循环,更新参数
for epoch in range(epoch):  # 数据集级别的循环,每个epoch循环一次数据集
    for step, (x_train, y_train) in enumerate(train_db):  # batch级别的循环 ,每个step循环一个batch
        with tf.GradientTape
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值