《python深度学习》第三章神经网络入门

神经网络入门

主要从例子入手,实现向量数据的分类和回归问题。

一、神经网络的剖析

                                         

神经网络的四个方面:

      (1)层:多个层组合形成网络(模型),将一个或多个输入张量转换为一个或多个输出张量,大多数层都有权重(利用随机梯度下降学到的一个或多个张量,包含网络的知识)。

注意:不同的张量格式和不同的数据处理类型要用到不同的层。例如:(samples, features)2D张量通常使用全连接层Dense来处理。(samples, timestep, features)3D张量序列数据

通常使用循环层LSTM来处理。图像数据4D张量,通常使用卷积层conv2D来处理。在keras中由函数式建模和序列建模(Sequential),只需要堆叠不同的层就可以,比较方面。

tensorflow2.3自带keras2.4而且有一些属性只能是tf自带的keras可用,keras2.4不支持多引擎了,所以直接都是用tf自带的keras。对于低版本的keras还是支持多引擎的。

      (2)模型:深度学习模型是层构成的有向无环图。keras中可以使用最简单的线性堆叠,很快的就能建立一个模型。网络的拓扑结构:双分支网络、多头网络、Inception模块等。

选定了网络的拓扑结构,就可以理解为将可能性空间(机器学习的定义:在预定义的可能性空间里,利用反馈信号的指引来寻找输入数据的有用表示)限定为一系列特定的张量运算,将输入数据映射为输出数据。模型由层来组成的,层进行的是一系列的张量运算。

      (3)损失函数与优化器:

                      损失函数(目标函数):衡量当前任务是否成功,需要将其最小化。但要注意过拟合问题。如何选择正确的损失函数十分重要,要使得损失函数和当前的任务相关,否则最终得到的结果可能不符合预期。一般的二分类问题可以使用二元交叉熵(binary crossentropy),多分类问题可以试用分类交叉熵(categorical crossentropy),回归问题可以使用均方误差(mean-squared error),序列学习问题可以使用联结主义时序分类(CTC, connectionist temporal classification)等。

                      优化器:决定如何基于损失函数对网络进行更新。

注意:多个输出的神经网络可能具有多个损失函数,但是梯度下降过程必须基于单个标量损失值,那么具有多个损失函数的网络,需要将所有损失进行再次操作,变为一个标量值。在计算损失的时候,特别要注意。

二、keras开发

(1)定义训练数据:输入张量和目标张量。

(2)定义层组成的网络(模型):将输入数据映射到目标。

(3)配置学习过程:选择损失函数、优化器和需要监控的指标。

(4)调用模型的fit方法在训练数据上进行迭代。

三、keras开发实例

下面会用三个例子来说明keras开发流程以及神经网络中的细节,代码在jupyter notebook运行,tensorflow2.3。

  1. IMDB数据集进行电影评论的二分类

#%%

import tensorflow as tf
from tensorflow.keras.datasets import imdb

(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000) #筛选出每条评论汇中,排名前10000的词。

#%%

print(train_data[0])
print(train_labels[0])
print(type(train_data))

#%%

t=[]
for sequence in train_data:
    t.append(max(sequence))
print(max(t)) #两种是等价的
print(max([max(sequence) for sequence in train_data]))

#%%

word_index = imdb.get_word_index()
reverse_word_index = dict(
    [(value, key) for (key, value) in word_index.items()])
decoded_review = ' '.join(
    [revers
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值