Keras学习
在进行标签转换的过程中可以使用LabelBinarizer()方法,然后fit_transform就可以直接得到标签的one-hot编码。
-
epoch:假设现在有3000张图,1epoch表示迭代了3000张图,batch=100的话,表示同时去训练100张图。在这里1epoch=30batch,也就是30个batch才能把整个数据集遍历一遍。epoch的值表示要对整个数据集遍历多少次。
-
模型H在fit之后,可以使用H.history["loss"],H.history["val_loss"],H.history["acc"],H.history["val_acc"]来分别获取训练结果的训练损失,验证损失,训练精度,验证精度。
-
观察训练集的loss和测试集的loss,如果差距大,则说明模型过拟合了。
过拟合解决方法:
使用更小的学习率,一般使用上一次学习率的十分之一;以及使用dropout来解决过拟合的情况。
权重参数初始化的方法:
kernel_initializer:权重参数初始化。
bias_initializer:偏置参数初始化。
https://keras.io/api/layers/initializers/
相关信息可以去上面地址查看,推荐使用截断高斯分布。TruncatedNormal
标准差:stddev越小,损失波动越小。
正则化:kernel_regularizer: 对权重参数加上正则化。基本都是用的L2正则化。 惩罚力度越大,曲线就越平稳,惩罚力度越小,就可能出现突变点时间的权重会造成模型的过拟合。
卷积神经网络
conv1D:文本数据,数值数据。表示是一维的(128,5)表示128个卷积核,每个卷积核大小是5.
conv2D:图像数据。
(32,(3,3)):
(3,3):卷积核大小。
32:表示使用了32个卷积核。
一般情况,卷积层后面接激活函数。
Flatten方法将数据拉长为一维。
一般使用经典参数就可以了。超参数自己设定就可以了,超参数包括(学习率,epoch,batchsize)
Batch Normalization:批量归一化。为了解决梯度消失的问题。
kernel_initializer:使用截断高斯分布来约束权重。
dropout:防止过拟合。
当出现过拟合是先调数据还是先调模型呢?
数据决定了模型的上线,因此,对数据进行讨论是最优方法。
循环神经网络
return_seq=true:会将整个序列的所有的值都返回回去,从而产生(None,49,50)的结果,等于false就只返回最后一个值。 等于true是返回是个序列,等于false时返回最后一个数值。
EarlStopping:可以指定在多少次loss损失都没有下降的情况下,就让模型停止。
文本数据处理
sklearn.feature.extraction.text下的CountVectorizer方法:将文本数据进行提取编号,对应文本数据位置标1,其余位置标0.
指定随机数种子保证,训练数据测试数据集在过程中是确定的。
在使用深度学习模型进行训练时,对CountVectorizer处理后的数据需要使用toarray()方法再处理一次才可以直接使用。
Word Embedings:使用Tokenizer的fit_on_text方法将文本数据转换为索引形式。使用texts_to_sequences方法处理数据。
pad_sequences:keras工具包下的一个方法,可以对长短不一的文本进行补齐操作。
Embedding:词嵌入,input_dim=文本数据中不重复的词的个数加上1。
参数调节:
步骤:
word2ver:词向量。LSTM和CNN都可以用来做文本。
多标签处理方式(这块了解不多,可以好好看一下)
MultiLabelBinarizer():处理多标签情况。
数据增强
图像数据处理首先要保证图片数据大小相同,可以使用image下的ImageDataGenerator下的flow_from_directory方法中的target_size参数来进行设定,一般设定为(224,224)。
图像旋转:
图像平移:
图像缩放:
图像翻转:水平和竖直
rescale:像素点压缩到0到255之间。
变换填充方法:
'constant':kkkkkkk|abcd|kkkkkkk(常数值K填充)
'nearest':aaaaa|abcd|ddddd(首位填充)
"reflect":abcddcba|abcd|dcbaabcd
"wrap":abcdabcd|abcd|abcdabcd
对抗生成网络GAN
迁移学习
-
数据量太少。
-
模型调参。
-
模型训练时间成本。
将别人训练好的模型参数直接拿过来使用。
A. 直接用别人训练好的参数初始化。
B.将别人训练好的模型参数冻结,不做训练。
VGG:
Resnet:残差网络。保证网络架构不会比原来差。
seq2seq
如果词频很低,就可以选择适当剔除。同时也可以设置一个最大词频数,如果超过这个数也就可以不要了。