《基于Tensorflow的知识图谱实战》 --- 利用(自定义的卷积层)实现MNIST识别

本文介绍了如何利用自定义的卷积层实现MNIST手写数字识别,通过残差网络保留更多细节。首先加载并预处理MNIST数据集,然后构建包含自定义残差层的卷积神经网络模型,经过训练得到良好准确率。最后,展示训练过程中的精度和损失变化,并进行数据预测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

⚽开发平台:jupyter lab
🎈运行环境:python3、tensorflow2.x

1.利用自定义的卷积层实现MNIST识别

1.1实现思想

(1) 如何在良好的训练结果上作进一步的提高呢?
一个简单的思想就是建立short-cut,即建立数据通路,使得输入的模型和经过卷积计算后的数据连接在一起,从而解决卷积层总是会忽略掉的某些特定的小细节的问题。

(2) 残差网络:将输入的数据经过计算后又重新与未经过计算的数据通过“叠加”的方式连接在一起,从而建立一个能够保留更多细节内容的卷积结构。

1.2 程序4.6(完整代码)

## 导入相关工具包
import numpy as np
import tensorflow as tf

## 加载MNIST数据集
mnist = tf.keras.datasets.mnist
(x_train,y_train),(x_test,y_test) = mnist.load_data()
## 训练集数目为60000,测试集数目为10000
### 由于CPU训练较慢,现在取部分数据进行实验,若处理速度较快,可省去该步骤
x_train.shape,y_train.shape,x_test.shape   #((60000, 28, 28), (60000,), (10000, 28, 28))
(x_train,y_train),(x_test,y_test) = (x_train[:600],y_train[:600]),(x_test[:100],y_test[:100])
x_train.shape,y_train.shape,x_test.shape   ## ((600, 28, 28), (600,), (100, 28, 28))
### # 将样本从整数转换为[0,1]区间的浮点数
x_train,x_test = x_train/255.0,x_test/255.0
## 在给定一个input时,在axis轴处给input增加一个维度
x_train = tf.expand_dims(x_train,-1)
### 因为有10个不同的目标值
y_train = np.float32(tf.keras.utils.to_categorical(y_train,num_classes=10))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值