深度学习框架keras——华为AI学习笔记15
1. 介绍
可以作为tensorflow、CNTK等高阶应用的接口,它本身不提供计算,偏前端。
可以帮助我们进行深度模型的设计、调试、评估和可视化。为什么不直接使用tensorflow的这些功能呢?因为keras的以下特点。
1.1. 用户友好
极大减少用户代码量
如果直接用tensorflow可能要用很多代码
1.2. 模块性
网络层、损失函数、优化器、正则化方法都是独立的,方便我们构建和维护
1.3. 易扩展性
依照现有模块编写的类或方法都可使用
2. keras的模块
2.1. keras.layers
很多神经网络层,比如 全连接、RNN、CNN
2.1.1. 常用层
layers.core
2.1.1.1. 全连接层
layers.core.dense(n, activation='')
n表示多少个神经元
activation为激活函数
2.1.1.2. Dropout
随机丢弃一部分神经元来防止过拟合
layers.core.Dropout(rate, seed='')
2.1.2. 卷积层
layers.convolutional
2.1.2.1. CNN
layers.convolutional.Con2D(N, kernel_shape, padding, activation)
图片用2D,文字可以是1D
kernel_shape是卷积核
padding是填充,不填充尺寸会不断缩小
activation是激活函数
2.1.3. RNN
layers.convolutional.SimpleRNN(N, activation='')
这是简单RNN,实际工作中可以是复杂的RNN,比如双向RNN
2.2. keras.models
创建模型,创建模型后再创建layers
它还提供了模型训练、优化和保存等方法
2.2.1. 创建模型
model = models.Sequential()
实例下模型对象,再加layers
具体可以如下:
-
models.Sequential([layers.Dense(n, input_shape), ])
-
Model = models.Sequential()
Model.add([layers.Dense(n, input_shape), ])
-
InputShape = Input()
Layer1 = layers.Dense(n)(InputShape)
2.2.2. 模型训练/预测
Model.fit()
这里需要注意的训练数据的格式是有要求的,需要进行一些调整。
Model.predict()
可以看到效果并不好,稍有常识的同学就知道用卷积神经网络应该会有更好的效果。这里只是一个简单的学习案例,不做更多的深入。
2.2.3. 保存与加载
Model.save
models.load()
2.3. keras.optimizers
优化器,比如SGD、Adam等,都封装在里面
2.3.1. SGD
optimizers.SGD(lr,decay,momentum, nesterov)
随机梯度下降,lr代表学习率,学习率不会变
2.3.2. Adam
optimizers.Adam(lr, beta_1, beta_2, epsilone, decay, amsgrad=False)
现在非常常见的优化器,学习率会随着训练下降
2.4. keras.activations
激活函数
2.4.1. activations.softmax
一般用在多分类任务
2.4.2. activations.relu
现在也非常常用,解决了一些梯度消失问题
2.4.3. activations.tanh
双曲正切函数,缺点是靠近正无穷或负无穷时会存在梯度消失问题
2.4.4. activations.elu
是relu的改进版,relu在0点不能求导
2.5. keras.datasets
封装了很多数据集,用于学习,比如mnist手写数字
优点是开源、免费,且已经被处理好
2.5.1. CIFAR10
6万张32*32彩色图片,可以做多分类
2.5.2. IMDB
电影评论,有正向负向情感,可以做二分类
2.5.3. 波士顿房价
可用于回归的学习
2.5.4. 话题分类newswire
2.6. keras.applications
提供了带有预训练权重的深度学习模型,用的时候直接导入或者微调就可以了
- 点赞
- 收藏
- 关注作者
评论(0)