深度学习入门项目:用keras构建CNN或LSTM对minist数据集做简单分类任务

深度学习入门项目:用keras构建CNN或LSTM对Minist数据集做简单分类任务

参考keras中文文档

keras: 是一个高级神经网络库,用 Python 语言写成,可以运行在 TensorFlow 或者 Theano 之上(即以此为后端)。它关注快速试验和原型设计。理念是“以最短的时间将想法转换为结果是做好研究的关键”。
CNN架构:

loss优化函数:
多分类:类别交叉熵(categorical_crossentro py)
二分类:二进制交叉熵损失函数(binary cross-entropy)
其中conv2d表示执行卷积,maxpooling2d表示执行最大池化,Activation表示特定的激活函数类型,Flatten层用来将输入“压平”,用于卷积层到全连接层的过渡,Dense表示全连接层
例如在手势识别中左上角是存储在训练集X_train[0]的手写体图像‘5’,y_train[0]表示对应的标签‘5’。

你如何知道你的模型是否欠拟合?
如果你的验证集的准确度高于训练集,那就是模型欠拟合。此外如果整个模型表现得不好,也会被称为欠拟合。例如使用线性模型进行图像识别通常会出现欠拟合的结果。
也有可能是 Dropout(Dropout)的原因导致你在深层神经网络中遇到欠拟合的情况。

Dropout在模型训练时随机将部分激活函数设置为零(让网络某些隐含层节点的权重不工作),以避免过拟合。 这种情况一般不会发生在验证/测试集的预测中,如果发生,你可以移除 Dropout来解决。如果模型现在出现大规模的过拟合,你可以开始添加小批量的 Dropout。

LSTM架构:
首先说明一点:LSTM输入层其数据要求必须是3D即需要先进行数据处理
常见方法引入Numpy中的数组,然后形成元组,之后进行reshape维度变换达到3D效果
LSTM()层必须指定输入的形状。而且每个LSTM层的输入必须是三维的。
这输入的三个维度是:
样本一个序列是一个样本。批次由一个或多个样本组成。
时间步长。一个时间步代表样本中的一个观察点。
特征。一个特征是在一个时间步长的观察得到的。
这意味着输入层在拟合模型时以及在做出预测时,对数据的要求必须是3D数组,即使数组的特定维度仅包含单个值。当定义LSTM网络的输入层时,网络假设你有一个或多个样本,并会给你指定时间步长和特征数量。你可以通过修改“ input_shape ”的参数修改时间步长和特征数量。

猜你喜欢

转载自blog.csdn.net/weixin_43307775/article/details/82957727
今日推荐