别怕深度学习,这玩意就是已经商业化了!一旦商业化就是代表不需要太多学习成本就可以实现功能!所以说现在难只不过是自己基础太低,低到不行!所以不担心
研究生做的很多的事情也就是调参!调参很玄学的事情!很靠经验的!
调参需要很长时间,现在好像都可以丢给计算机去调参的!
总览
机器学习流程,也可以说深度学习流程大致如此
1.自制数据集,解决本领域应用
2.数据增强,扩充数据集
3.断点续训,存取模型
4.参数提取,把参数存入文本
5.acc/loss可视化,查看训练效果
6.应用程序,给图识物
关键就在于,损失函数的选择,模型的构建!
卷积神经网络适合特征提取!用特别多的神经网络进行特征提取!
卷积神经网络:借助卷积核提取特征后,送入全连接网络
[卷积(convolutional)—— 批标准化(BN)———激活(Activation)———池化(Pooling)]
以上都是对特征进行特征提取,之后会后送到全连接层(FC)
卷积是什么?卷积就是特征提取器,就是CBAPD
model tf.keras.models.Sequential([
Conv2D(fi1ters=6,kerne1size=(5,5),padding='same'), #卷积层
BatchNormalization(), #BN
Activation('relu'), #激活层
MaxPoo12D(pool_size=(2,2),strides=2,padding='same'),
Dropout(0.2),dropout ])
准备数据:采集大量“特征标签”数据(有数据并配有标签,采取大量的数据特征以及标签构成数据集!一般标签需要人工标记!)
搭建网络:搭建神经网络结构(设计自己的神经网络)
优化参数:训练网络获取最佳参数(反传,不断训练,反向传播优化参数)
应用网络:将网络保存为模型,输入新数据,输出分类或预测结果(前传)
MP模型:每个输入特征乘上对应的比例参数求和后,再通过非线性函数输出分类的结果!
(一张图片,三种可能)=(一个图片,四个特征)*(四个特征,三种分类)+(非线性函数)
训练自己的神经网络模型
要有自己的训练集(也叫监督数据)以及测试集
通过自己的训练集测试出来神经网络对应的参数
再用测试集测试成功率(泛化能力,处理除了训练集数据的其他的一般数据的能力)
模型训练与评估
确定好训练数据和评估数据
选择损失函数,优化方法进行训练
利用评估数据评估模型
神经网络实现鸢尾花分类
准备数据 · 数据集读入 数据集乱序 生成训练集和测试集(即x train/y_train,x_test/y_test)成(输入特征,标签)对,每次读入一小撮(batch) 搭建网络 · 定义神经网路中所有可训练参数 参数优化 嵌套循环达代,wth结构更新参数,显示当前loss 测试效果 计算当前参数前向传播后的准确率,显示当前acc acc/Ioss可视化
用Tensorflow API:tf.keras搭建网络八股六步法
1.import
2.train,test(告知要喂入网络的训练集或测试集!指出训练集的输入特征x_train 训练集的标签y_train,测试集的输入特征x_test 训练集的标签y_test)
3.model tf.keras.models.Sequential(逐层描述每层网络!走了一遍前向传播!)
4.model.compile(配置训练方法!告知训练的时候选择哪种优化器!选择哪个损失函数!选择哪个测评指标!)
5.model.fit(执行训练过程!告知训练集测试集的输入特征和标签!告知每一个batch是多少!要迭代多少次数据集!)
6.model.summary(打印结果!)
当有了自己的训练集的时候就是要在第二步的时候如何自己定义好四个集合!训练集测试集的数据和标签!!!
model=tf.keras.models.Sequential(网络结构)
描述各层网络,网络结构举例:
拉直层: