深度学习小tips
用Tensorflow API:tf.keras搭建网络八
六步法
import
train, test
model = tf.keras.models
Sequentialmodel.compile
# 描述各层的网络结构
Sequentialmodel
拉直层:tf.keras.layers.Flatten()
全连接层:tf.keras.layers.Dense(神经元个数,activation="激活函数“, kernel_regularizer=哪种正则化)
(activation(字符串给出)可选: relu、softmax、sigmoid、tanh
kernel_regularizer可选: tf.keras.regularizers.l1()、tf.keras.regularizers.l2())
卷积层:tf.keras.layers.Conv2D(filters =卷积核个数,kernel_size=卷积核尺寸,strides=卷积步长,padding = "valid" or "same")
LSTM层:tf.keras.layers.LSTM()
# 告知训练时选择的优化器、损失函数、评测指标
model.compile(optimizer =优化器,loss=损失函数metrics =[“准确率")
Optimizer可选:
'sgd' or tf.keras.optimizers.SGD (Ir=学习率,momentum=动量参数)
'adagrad' or tf.keras.optimizers.Adagrad (lr=学习率)
‘adadelta' or tf.keras.optimizers.Adadelta (lr=学习率)
‘adam' or tf.keras.optimizers.Adam (lr=学习率, beta_1=0.9, beta_2=0.999)
loss可选:
'mse'or tf.keras.losses.MeanSquaredError()
'sparse _categorical_crossentropy or tf.keras losses.SparseCategoricalCrossentropy(from_logits=False)
Metrics可选:
‘accuracy:y_和y都是数值,如y_=[1] y=[1]
'categorical_accuracy:y_和y都是独热码(概率分布),如y_=[0,1,0] y=[0.256,0.695,0.048]
'sparse_categorical_accuracy : y_是数值,y是独热码(概率分布),如y_=[1] y=[0.256,0.695,0.048]
model.fit
model.fit(训练集的输入特征,训练集的标签,batch_size= , epochs= ,
validation_data=(测试集的输入特征,测试集的标签),
validation_split=从训练集划分多少比例给测试集,
validation_freq=多少次epoch测试一次)
model.summary
sequential的平替->class MyModel(Model) model = Mymodel
可应用于跳连的神经网络
1 | class MyModel(Model): |
init()定义所需网络结构块
call()写出前向传播
ep:
1 | class IrisModel (Model): |
自制数据集
搞一堆图片,搞两个文件夹,分别标为train和test,图片大小尽量搞成一样的,搞成灰度图,0-255,
写两个txt分别给train和test打标签,命名方式为id_标签.jpg 标签,如0_5.jpg 5,代表第一个图片表示的5。
写一个generate函数参数分别为path和txt
1 | def generateds(path, txt): |
循环计算过程
ht = tanh(xtwxh+ht-1whh+bh)
yt=softmax(htwhy+by)
LSTM计算过程
GRU计算过程
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.