神经网络类型

卷积神经网络

卷积神经网络的概述

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

卷积神经网络的层级结构

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

经典卷积神经网络

  • 开山之作——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))

相关推荐

  1. 神经网络类型

    2024-07-17 18:46:01       23 阅读
  2. 神经网络】深度神经网络

    2024-07-17 18:46:01       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 18:46:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 18:46:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 18:46:01       58 阅读
  4. Python语言-面向对象

    2024-07-17 18:46:01       69 阅读

热门阅读

  1. ArduPilot开源代码之AP_DAL_GPS

    2024-07-17 18:46:01       20 阅读
  2. 江苏服务器租用:算力服务器适用于哪些场景?

    2024-07-17 18:46:01       18 阅读
  3. C语言求阶乘

    2024-07-17 18:46:01       19 阅读
  4. 力扣每日一题:2956. 找到两个数组中的公共元素

    2024-07-17 18:46:01       26 阅读
  5. 星月工作室信息组团队/XYOI

    2024-07-17 18:46:01       27 阅读
  6. EXIT_SUCCESS、EXIT_FAILURE、return的区别和用法

    2024-07-17 18:46:01       21 阅读
  7. 07 - FFmpeg 更改视频分辨率 - 保存 yuv420p

    2024-07-17 18:46:01       19 阅读
  8. Nacos 服务发现(订阅)源码分析(客户端)

    2024-07-17 18:46:01       19 阅读
  9. Flask核心面试题

    2024-07-17 18:46:01       22 阅读
  10. opencv—常用函数学习_“干货“_8

    2024-07-17 18:46:01       25 阅读
  11. QT QGridLayout设置网格间距以及边框的颜色

    2024-07-17 18:46:01       19 阅读