深度学习常见概念和keras网络
- 梯度下降
- loss function
- 优化
- keras主要网络
- keras建立model
1.梯度下降
- 随机梯度下降
- 小批量梯度下降
- 带动量梯度下降 (更快的梯度下降)
- adagrad (调整学习率)
- rmsprop (优化adagrad学习率越来越低的问题)
- adam(优化rmsprop)
2.深度学习中的loss function
- mse 均方误差
- mae 绝对值误差
- binary_crossentropy 二分类交叉熵
- categorical_crossentropy 多分类 (标签已经转为one-hot)
- sparse_categorical_crossentropy 稀疏多分类(标签为数字,例如1,2,3.。。)
3.优化
- k-fold交叉验证 shuffle
- 缺失值预处理,标准化
- 过拟合
- 减小网络大小
- 添加权重正则化 l1 l2
- 添加dropout
- 获取更多训练数据
4.keras主要网络
-
Dense 全连接层
-
CNN 卷积层Conv1 2 3 池化层 Flatten GlobalPooling…
-
RNN 循环网络层 SimpleRNN LSTM GRU
RNN模型注意堆叠过程中将隐含层H全部传递到下一层,最后一层则不需要
5.keras建立model
-
Sequential
序列方式添加
model = keras.models.Sequential() model.add(keras.layers.Flatten(input_shape=[28, 28])) model.add(keras.layers.Dense(300, activation='relu')) model.add(keras.layers.Dense(100, activation='relu')) model.add(keras.layers.Dense(10, activation='softmax')) model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics = ['accuracy']) model.summary() history = model.fit(x_train, y_train, epochs=10, validation_data=(x_valid, y_valid))
-
函数api
input_wide = keras.layers.Input(shape=[5]) input_deep = keras.layers.Input(shape=[6]) hidden1 = keras.layers.Dense(30, activation='relu')(input_deep) hidden2 = keras.layers.Dense(30, activation='relu')(hidden1) concat = keras.layers.concatenate([input1, input2]) output = keras.layers.Dense(1)(concat) model = keras.models.Model(inputs=[input_wide, input_deep],outputs=[output])
-
但输入多输出 例如输入文章->文章主题+风格
-
多输入单输出
例如阅读理解问题 model = Model([input, question_input], answer)
参考文本-> embedding->LSTM->|->concatenate->Dense->答案
问题-> embedding->LSTM------->|
-
有向无环图 Inception
-
ResNet残差网络 将前几层输入加到当前层,减少梯度消失
-