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


 

 

迁移学习


  1. 数据量太少。
  2. 模型调参。
  3. 模型训练时间成本。

将别人训练好的模型参数直接拿过来使用。

A. 直接用别人训练好的参数初始化。

B.将别人训练好的模型参数冻结,不做训练。

VGG:

Resnet:残差网络。保证网络架构不会比原来差。

 

 

seq2seq


如果词频很低,就可以选择适当剔除。同时也可以设置一个最大词频数,如果超过这个数也就可以不要了。