# 展平层(flatten)
## 定义方式如下
~~~
{
# 层名,无限制
"name": "flatten_1",
# 层类型,将数据展平为适合神经网络的结构,用于输入层或者卷积层和全连接层中间。 (60000, 1, 28, 28) ——> (784, 60000)
"type": "flatten"
},
~~~
## 参数说明:
name:层名称,无限制,随便取
type:层类型,必须为 `flatten`,区分大小写
> 作用:将数据展平为适合神经网络的结构,用于输入层或者卷积层和全连接层中间。
> 例如:对于mnist数据集,(60000, 1, 28, 28) —> (784, 60000)
> 通常用于输入层,或卷积池化层和全连接层的中间
## 完整例子
~~~
# pip install AADeepLearning
from AADeepLearning import AADeepLearning
from AADeepLearning.datasets import mnist
from AADeepLearning.datasets import np_utils
# mnist数据集已经被划分成了60,000个训练集,10,000个测试集的形式,如果数据不存在则自动下载
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# 第一个维度是样本数目,第二维度是通道数表示颜色通道数,第三维度是高,第四个维度是宽
x_train = x_train.reshape(x_train.shape[0], 1, 28, 28)
x_test = x_test.reshape(x_test.shape[0], 1, 28, 28)
# 将x_train, x_test的数据格式转为float32
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
# 归一化,将值映射到 0到1区间
x_train /= 255
x_test /= 255
# 因为是10分类,所以将类别向量(从0到10的整数向量)映射为二值类别矩阵,相当于将向量用one-hot重新编码
y_train = np_utils.to_categorical(y_train, 10)
y_test = np_utils.to_categorical(y_test, 10)
# 网络配置文件
config = {
# 初始学习率
"learning_rate": 0.001,
# 优化策略: sgd/momentum/rmsprop/adam
"optimizer": "adam",
# 使用动量的梯度下降算法做优化,可以设置这一项,默认值为 0.9 ,一般不需要调整
"momentum_coefficient": 0.9,
# 训练多少次
"number_iteration": 1000,
# 每次用多少个样本训练
"batch_size": 64,
# 迭代多少次打印一次信息
"display": 100,
}
# 网络结构,数据将从上往下传播
net = [
{
# 层名,无限制
"name": "flatten_1",
# 层类型,将数据展平为适合神经网络的结构,用于输入层或者卷积层和全连接层中间。 (60000, 1, 28, 28) ——> (784, 60000)
"type": "flatten"
},
{
# 层名
"name": "fully_connected_1",
# 层类型,全连接层
"type": "fully_connected",
# 神经元个数
"neurons_number": 256,
# 权重初始化方式 msra/xavier/gaussian
"weight_init": "msra"
},
{
# 层名
"name": "relu_1",
# 层类型(激活层) 可选,relu,sigmoid,tanh,
"type": "relu"
},
{
# 层名
"name": "fully_connected_2",
# 层类型,全连接层
"type": "fully_connected",
# 神经元个数, 因为是10分类,所以神经元个数为10
"neurons_number": 10,
# 权重初始化方式 msra/xavier/gaussian
"weight_init": "msra"
},
{
# 层名
"name": "softmax_1",
# 层类型,分类层,最终输出十分类的概率分布
"type": "softmax"
}
]
# 定义模型,传入网络结构和配置项
AA = AADeepLearning(net=net, config=config)
# 训练模型
AA.train(x_train=x_train, y_train=y_train)
# 使用测试集预测,返回概率分布和准确率, score:样本在各个分类上的概率, accuracy:准确率
score, accuracy = AA.predict(x_test=x_test, y_test=y_test)
print("test set accuracy:", accuracy)
~~~
- 序言
- 安装
- 快速体验
- 配置
- 层(layer)
- 展平(flatten)
- 全连接(fully connected)
- 卷积(convolutional)
- 池化(pooling)
- 标准化(batch normalization)
- 失活(dropout)
- 循环(RNN)
- 长短期记忆(LSTM)
- 激活函数(activation)
- relu
- sigmoid
- tanh
- 损失(loss)
- 交叉熵损失(softmax)
- 折页损失(SVM或Hinge)
- 优化器(optimizer)
- 带动量学习率自适应(adam)
- 动量(momentum)
- 学习率自适应(rmsprop)
- 随机梯度下降(sgd)
- 模型(model)
- 保存(save)
- 载入(reload)
- 继续训练(continue train)
- 数据集(datasets)
- 手写数字(mnist)
- 时尚物品(Fashion-MNIST)
- 10种物体分类(cifar10)
- 100种物体分类(cifar100)
- 电影评论情感分类(imdb)
- 路透社新闻主题分类(reuters)
- 可视化(visualization)
- 损失曲线(loss)
- 准确率曲线(accuracy)