自学内容网 自学内容网

神经网络类型

卷积神经网络

卷积神经网络的概述

  • 一种带有卷积结构的深度神经网络,通过特征提取和分类识别完成对输入数据的判别

卷积神经网络的层级结构

  • 输入层即接收数据的输入,可以处理多维数据,也能对输入特征进行标准化处理,有利于提升卷积神经网络的学习效率和表现
  • 卷积层提取一个局部区域的特征,不同的卷积核相当于不同的特征提取器
  • 池化层对数据进行降维,减少数据特征,减少网络参数和运算次数,避免过拟合,常用方法有最大值池化和均值池化
  • 全连接层神经元排成一列,这些神经元与前一层神经元通过权值互联,呈全连接结构
  • 输出层通常是全连接层,因此其结构和工作原理与传统前馈神经网咯中的输出层相同

经典卷积神经网络

  • 开山之作——LeNet-5
  • 王者归来——AlexNet
  • 里程碑式创新——ResNet

卷积神经网络的应用

  • 一维卷积序列模型、自然语言处理模型
  • 二维卷积图像处理、计算机视觉领域
  • 三位卷积医学领域、视频处理领域

循环神经网络

循环神经网络的概述

  • 循环神经网络是一类以序列数据为输入,在序列的演进方向进行递归且所有节点按链式链接的递归神经网络

循环神经网络的结构及类别

  • 一个典型的RNN网络包含一个输入x,一个输出h和一个神经网络单元A
  • 类别:一对一、一对多、多对多

经典循环神经网络

  • 长短期记忆网络(LSTM):增强循环神经网络的学习能力,对有价值的信息进行长期记忆,减少循环神经网络的学习难度

循环神经网络的应用

  • 文本生成、机器翻译、语音识别、生成图像描述、视频标记

生成对抗网络

生成对抗网络定义

  • 一种深度学习模型,通过判别模型和生成模型的相互博弈学习,生成接近真实数据的数据分布或对输入数据进行分类
  • 近年来复杂分布上无监督学习最具前景的方法之一

生成对抗网络结构

  • 生成器:在给定输入数据时,理解输入,生成类似的输出
  • 判别器:在给定输入数据时,将输入数据正确地分类

生成对抗网络对比

  • 传统神经网络:根据输入数据的特征,预测输入数据的标签,一个神经网络是一个训练模型,网络训练时,依赖于输入数据样本更新参数梯度
  • 生成对坑网络:根据输入数据的标签,生成接近真实的输入分布,一个网络包含生成器和判别器两个模型,网络训练时,生成器模型梯度更新依赖于判别器模型,生成器和判别器可以是CNN、RNN神经网络

生成对坑神经网络类别

  • 标准生成对抗网络(GAN)、深度卷积生成对抗网络(DCGAN)、条件生成对抗网络(CGAN)、风格迁移生成对抗网络(CycleGAN)、基于风格的生成对抗网络(StyleGAN)、大型生成对抗网络(BigGAN)

生成对抗网络应用场景

  • 图像生成、图像转换、人脸合成、半监督学习

sklearn_keras_iris案例

使用sklearn和keras两种不同的机器学习方法分别训练iris数据集,并评估模型的准确性。其中,sklearn使用的是逻辑回归,而keras通过构建神经网络模型来进行训练。

#导入相关库
import seaborn as sns
import numpy as np
#机器学习:sklearn
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegressionCV
#深度学习:keras
from keras.models import Sequential
from keras.layers import Dense
from keras import utils

#加载数据
iris = sns.load_dataset('iris')
#获取数据集的特征和目标值
x = iris.values[:,:4]
y = iris.values[:,4]
#分割数据集
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.5,random_state=0)

#使用sklearn进行训练
lr = LogisticRegressionCV()
lr.fit(x_train,y_train)

#模型评估
print("score:",lr.score(x_test,y_test))

#使用keras进行训练
#数据处理
#目标值的热编码
def one_hot_encode(arr):
    #获取目标值中的所有类别并进行热编码
    uniques,ids = np.unique(arr,return_inverse=True)
    return utils.to_categorical(ids,len(uniques))
#对目标值进行编码
y_train_hot = one_hot_encode(y_train)
y_test_hot = one_hot_encode(y_test)
#构建模型
model = Sequential([
    #隐藏层
    Dense(10,activation="relu",input_shape=(4,)),
    #隐藏层
    Dense(10,activation="relu"),
    #输出层
    Dense(3,activation="softmax")
])
#查看模型结构
print(model.summary())
# 可视化
# utils.plot_model(model,show_shapes=True)
#模型编译
model.compile(optimizer="adam",loss="categorical_crossentropy",metrics=["accuracy"])
#类型转换
x_train = np.array(x_train,dtype=np.float32)
x_test = np.array(x_test,dtype=np.float32)
#模型训练
model.fit(x_train,y_train_hot,epochs=10,batch_size=1,verbose=1)
#模型评估
loss,accuracy = model.evaluate(x_test,y_test_hot,verbose=1)
print("loss:{0},accuracy:{1}".format(loss,accuracy))

原文地址:https://blog.csdn.net/weixin_51787442/article/details/140442988

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!