Keras实战(一)

什么是感受野?

局部感受野(Local Receptive Field)是指在神经网络中,每个神经元只与输入图像的一小部分区域相连,这个区域就称为局部感受野。

简单来说,局部感受野就像是我们看待事物时的一个小窗口,我们只能通过这个小窗口看到一部分场景,而不能看到整个场景。同样,在神经网络中,每个神经元也只能处理输入图像的一小部分信息,而不能处理整个图像的信息。

举一个例子,假设我们有一个包含许多像素点的图像,每个像素点都可以表示为红、绿、蓝三种颜色的组合。现在有一个神经元,它只能处理三个像素点,即它的局部感受野只包含这三个像素点。当我们输入一张图像时,只有这三个像素点会传递给这个神经元进行处理,而其他像素点则不会对这个神经元的输出产生影响。

通过将输入图像划分成许多小的区域,并将每个神经元与这些小的区域相连,可以使得神经网络能够更好地理解和处理图像中的局部特征,从而提高图像分类、目标检测等任务的准确性。

keras minst

python 复制代码
from keras.models import Sequential
from keras.layers.core import Dense, Activation, Dropout
from keras.optimizers import SGD, RMSprop, Adam
import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils  # todo: 用于处理numpy的工具函数
from keras import regularizers  # todo: 正则化

# todo:手写识别

# todo:重复性设置-作用是可以每次复现实验结果
np.random.seed(1671)

# todo:网络和训练
NB_EPOCH = 20  # todo:200次迭代-200次重复训练
BATCH_SIZE = 128  # todo: 指的是一次性处理数据的数量,批数
NB_CLASSSE = 10  # todo: 代表输出结果的种类数量
OPTIMIZER = SGD()  # todo: 优化器,随机梯度下降
OPTIMIZER2 = RMSprop()  # todo: 优化器2
OPTIMIZER3 = Adam()  # todo: 优化器3
N_HIDDEN = 128  # todo: 隐藏层中神经元的个数
VALIDATION_SPLIT = 0.2  # todo:训练集中用作验证集的比例
VERBOSE = 1  # todo: 是否打印日志,每一个epoch以进度条等信息展示
DROPOUT = 0.3  # todo: 随机杀死30%的神经元
# todo: 读取数据
# todo:(X_train, y_train)是训练数据,其中X_train是训练图像,y_train是训练标签。
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# todo:X_train 是 60 000 行 28×28 的数据,变形为 60000×784
RESHAPE = 784
# todo: 数据
x_train = x_train.reshape(60000, RESHAPE)
x_test = x_test.reshape(10000, RESHAPE)
# todo: 标签 NumPy库将X_train的数据类型转换为'float32'
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
# todo: 像素值从0到255的范围缩放到0到1之间,以便于数学运算和优化
x_train = x_train / 255
x_test = x_test / 255
# todo:X_test.shape[0]返回的是X_test数组的第一维的大小,也就是测试样本的数量。
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')
# todo:这行代码是在Python中使用Keras库中的np_utils.to_categorical函数,
#  将y_train中的整数标签转换为二进制类别矩阵。NB_CLASSES是分类的数量,
#  也就是你的任务中有多少不同的标签。对于每一个样本,
#  该函数会创建一个长度为NB_CLASSES的二进制向量,对应标签的位置为1,其他位置为0。
#  这种格式对于多分类问题是非常有用的,因为它允许我们使用像softmax这样的函数来计算每个类别的概率。
y_train = np_utils.to_categorical(y_train, NB_CLASSSE)
y_test = np_utils.to_categorical(y_test, NB_CLASSSE)
# todo:定义模型-正则化层通常应用在卷积层或全连接层之后,在激活函数层之前
model = Sequential()
model.add(Dense(N_HIDDEN, kernel_regularizer=regularizers.l2(0.01), input_shape=(RESHAPE,)))
# todo:添加隐藏层
model.add(Activation('relu'))
model.add(Dropout(DROPOUT))
model.add(Dense(N_HIDDEN))
model.add(Activation('relu'))
model.add(Dropout(DROPOUT))
model.add(Dense(NB_CLASSSE))
model.add(Activation('softmax'))
# todo:调用模型(model)的summary方法。这个方法会打印出模型的架构信息,包括每一层的名称、输出形状、参数数量等。
model.summary()
# todo:模型的编译 损失函数,优化器 评估指标 metrics=['accuracy']则设置评估模型性能的标准,这里使用准确率。
model.compile(loss='categorical_crossentropy', optimizer=OPTIMIZER3, metrics=['accuracy'])
# todo: 模型编译好之后就是训练 fit()
history = model.fit(x_train, y_train, batch_size=BATCH_SIZE, epochs=NB_EPOCH, verbose=VERBOSE,
                    validation_split=VALIDATION_SPLIT)
# todo: 测试
score = model.evaluate(x_test, y_test, verbose=VERBOSE)
print('Test Score:', score[0])  # todo: 损失值loss
print('Test accuracy:', score[1])  # todo: 准确率acc

# todo: 保存模型
model.save('my_model.h5')
# 加载模型
# model = load_model('my_model.h5')
# todo;200 epoch
# todo: 未加隐藏层之前是92.30%
# todo: 加隐藏层之后是97.6%
# todo: 加Dropout之后是97.7%
# todo: 更换优化器2之后是97.6%
# todo: 更换优化器3之后是97.9%
# todo: 加了正则化L2(0.01)之后是97%

为什么要共享权重与偏执?

因为卷积核目的是(例如在3x3的感受野)使得在中心像素与周围其他像素之间的关联关系上,能够在窗口移动的过程中,保留这种模式规则。

感受野(卷积核)->产生一个特征图。

相关推荐
Neolnfra3 小时前
拒绝数据“裸奔”!把顶级AI装进自己的硬盘,这款神仙开源工具我粉了
人工智能·开源·蓝耘maas
code_li3 小时前
只花了几分钟,用AI开发了一个微信小程序!(附教程)
人工智能·微信小程序·小程序
飞Link3 小时前
瑞萨联姻 Irida Labs:嵌入式开发者如何玩转“端侧视觉 AI”新范式?
人工智能
RSTJ_16253 小时前
PYTHON+AI LLM DAY THREETY-SEVEN
开发语言·人工智能·python
郝学胜-神的一滴3 小时前
深度学习优化核心:梯度下降与网络训练全解析
数据结构·人工智能·python·深度学习·算法·机器学习
Aision_3 小时前
Agent 为什么需要 Checkpoint?
人工智能·python·gpt·langchain·prompt·aigc·agi
小贺儿开发3 小时前
《唐朝诡事录之长安》——盛世马球
人工智能·unity·ai·shader·绘画·影视·互动
秋94 小时前
ESP32 与 Air780E 4G 模块配合做 MQTT 数据传输
人工智能
DeepFlow 零侵扰全栈可观测4 小时前
运动战:AI 时代 IT 运维的决胜之道——DeepFlow 业务全链路可观测性的落地实践
运维·网络·人工智能·arcgis·云计算
链上日记4 小时前
AgentWin:AI Agent驱动的Web4智能金融新纪元
人工智能·金融