【深度学习】深度学习md笔记总结第5篇:神经网络与tf.keras,学习目标【附代码文档】

深度学习笔记完整教程(附代码资料)主要内容讲述:深度学习课程,深度学习介绍要求,目标,学习目标,1.1.1 区别,学习目标,学习目标。TensorFlow介绍,2.4 张量学习目标,2.4.1 张量(Tensor),2.4.2 创建张量的指令,2.4.3 张量的变换,2.4.4 张量的数学运算,学习目标。TensorFlow介绍,1.2 神经网络基础学习目标。TensorFlow介绍,总结学习目标,1.3.1 神经网络,1.3.2 playground使用,学习目标,1.4.1 softmax回归,1.4.2 交叉熵损失。神经网络与tf.keras,1.3 Tensorflow实现神经网络学习目标,1.3.1 TensorFlow keras介绍,1.3.2 案例:实现多层神经网络进行时装分类。神经网络与tf.keras,1.4 深层神经网络学习目标。卷积神经网络,3.1 卷积神经网络(CNN)原理学习目标。卷积神经网络,3.1 卷积神经网络(CNN)原理学习目标。卷积神经网络,2.2案例:CIFAR100类别分类学习目标,2.2.1 CIFAR100数据集介绍,2.2.2 API 使用,2.2.3 步骤分析以及代码实现(缩减版LeNet5),学习目标。卷积神经网络,2.4 BN与神经网络调优学习目标。卷积神经网络,2.4 经典分类网络结构学习目标,2.4.6 案例:使用pre_trained模型进行VGG预测,2.4.7 总结。卷积神经网络,2.5 CNN网络实战技巧学习目标,3.1.1 案例:基于VGG对五种图片类别识别的迁移学习,3.1.2 数据增强的作用。卷积神经网络,总结学习目标,1.1.1 项目演示,1.1.2 项目结构,1.1.3 项目知识点,学习目标,1.2.1 安装。商品物体检测项目介绍,3.4 Fast R-CNN。YOLO与SSD,4.3 案例:SSD进行物体检测4.3.1 案例效果,4.3.2 案例需求,4.3.3 步骤分析以及代码,2.1.1 常用目标检测数据集,2.1.2 pascal voc数据集介绍,2.1.3 XML。商品检测数据集训练,5.2 标注数据读取与存储5.2.1 案例:xml读取本地文件存储到pkl,5.3.1 案例训练结果,5.3.2 案例思路,5.3.3 多GPU训练代码修改,5.4.1 预测代码,5.4.1 keras 模型进行TensorFlow导出。

全套笔记资料代码移步: 前往gitee仓库查看

感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~


全套教程部分目录:


部分文件图片:

神经网络与tf.keras

1.3 Tensorflow实现神经网络

学习目标

  • 目标

  • 掌握Tensorflow API的使用

  • 应用

  • 应用TF搭建一个分类模型

1.3.1 TensorFlow keras介绍

Keras 是一个用于构建和训练深度学习模型的高阶 API。它可用于快速设计原型、高级研究和生产,具有以下三个主要优势:

  • 方便用户使用,快速构建模型 Keras 具有针对常见用例做出优化的简单而一致的界面。它可针对用户错误提供切实可行的清晰反馈。
  • 模块化和可组 将可配置的构造块连接在一起就可以构建 Keras 模型,并且几乎不受限制。

  • 导入:

import tensorflow as tf
from tensorflow import keras
  • 1、获取相关现有数据集(无需自己去构造)
  • keras.datasets

    • mnist:手写数字
    • fashion_mnist:时尚分类
    • cifar10(100):10个类别分类
fashion_mnist = keras.datasets.fashion_mnist(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()print(train_images, train_labels)
  • 2、构建模型
  • 在 Keras 中,您可以通过组合层来构建模型。模型(通常)是由层构成的图。最常见的模型类型是层的堆叠,keras.layers中就有很多模型,如下图:可以在源码文件中找到
  • tf.keras.Sequential模型(layers如下)
from tensorflow.python.keras.layers import Dense
from tensorflow.python.keras.layers import DepthwiseConv2D
from tensorflow.python.keras.layers import Dot
from tensorflow.python.keras.layers import Dropout
from tensorflow.python.keras.layers import ELU
from tensorflow.python.keras.layers import Embedding
from tensorflow.python.keras.layers import Flatten
from tensorflow.python.keras.layers import GRU
from tensorflow.python.keras.layers import GRUCell
from tensorflow.python.keras.layers import LSTMCell
...
...
...
  • Flatten:将输入数据进行形状改变展开
  • Dense:添加一层神经元

  • Dense(units,activation=None,**kwargs)

    • units:神经元个数
    • activation:激活函数,参考tf.nn.relu,tf.nn.softmax,tf.nn.sigmoid,tf.nn.tanh
    • **kwargs:输入上层输入的形状,input_shape=()

tf.keras.Sequential构建类似管道的模型

model = keras.Sequential([keras.layers.Flatten(input_shape=(28, 28)),keras.layers.Dense(128, activation=tf.nn.relu),keras.layers.Dense(10, activation=tf.nn.softmax)
])
  • 3、训练与评估

  • 通过调用model的 compile 方法去配置该模型所需要的训练参数以及评估方法。

  • model.compile(optimizer,loss=None,metrics=None, 准确率衡):配置训练相关参数

    • optimizer:梯度下降优化器(在keras.optimizers)
from tensorflow.python.keras.optimizers import Adadeltafrom tensorflow.python.keras.optimizers import Adagradfrom tensorflow.python.keras.optimizers import Adamfrom tensorflow.python.keras.optimizers import Adamaxfrom tensorflow.python.keras.optimizers import Nadamfrom tensorflow.python.keras.optimizers import Optimizerfrom tensorflow.python.keras.optimizers import RMSpropfrom tensorflow.python.keras.optimizers import SGDfrom tensorflow.python.keras.optimizers import deserializefrom tensorflow.python.keras.optimizers import getfrom tensorflow.python.keras.optimizers import serializefrom tensorflow.python.keras.optimizers import AdamOptimizer()
  * loss=None:损失类型,类型可以是字符串或者该function名字参考:
from tensorflow.python.keras.losses import KLDfrom tensorflow.python.keras.losses import KLD as kldfrom tensorflow.python.keras.losses import KLD as kullback_leibler_divergencefrom tensorflow.python.keras.losses import MAEfrom tensorflow.python.keras.losses import MAE as maefrom tensorflow.python.keras.losses import MAE as mean_absolute_errorfrom tensorflow.python.keras.losses import MAPEfrom tensorflow.python.keras.losses import MAPE as mapefrom tensorflow.python.keras.losses import MAPE as mean_absolute_percentage_errorfrom tensorflow.python.keras.losses import MSEfrom tensorflow.python.keras.losses import MSE as mean_squared_errorfrom tensorflow.python.keras.losses import MSE as msefrom tensorflow.python.keras.losses import MSLEfrom tensorflow.python.keras.losses import MSLE as mean_squared_logarithmic_errorfrom tensorflow.python.keras.losses import MSLE as mslefrom tensorflow.python.keras.losses import binary_crossentropyfrom tensorflow.python.keras.losses import categorical_crossentropyfrom tensorflow.python.keras.losses import categorical_hingefrom tensorflow.python.keras.losses import cosinefrom tensorflow.python.keras.losses import cosine as cosine_proximityfrom tensorflow.python.keras.losses import deserializefrom tensorflow.python.keras.losses import getfrom tensorflow.python.keras.losses import hingefrom tensorflow.python.keras.losses import logcoshfrom tensorflow.python.keras.losses import poissonfrom tensorflow.python.keras.losses import serializefrom tensorflow.python.keras.losses import sparse_categorical_crossentropyfrom tensorflow.python.keras.losses import squared_hinge
  * metrics=None, ['accuracy']
  • model.fit():进行训练

    • (x=None,y=None, batch_size=None,epochs=1,callbacks=None)

    • x:特征值:

1、Numpy array (or array-like), or a list of arrays2、A TensorFlow tensor, or a list of tensors3、`tf.data` dataset or a dataset iterator. Should return a tuple of either `(inputs, targets)` or `(inputs, targets, sample_weights)`.4、A generator or `keras.utils.Sequence` returning `(inputs, targets)` or `(inputs, targets, sample weights)`.
  * y:目标值* batch_size=None:批次大小* epochs=1:训练迭代次数* callbacks=None:添加回调列表(用于如tensorboard显示等)
model.compile(optimizer=tf.keras.optimizers.Adam(),loss='sparse_categorical_crossentropy',metrics=['accuracy'])model.fit(train_images, train_labels, epochs=5)model.evaluate(test_images, test_labels)

1.3.2 案例:实现多层神经网络进行时装分类

70000 张灰度图像,涵盖 10 个类别。以下图像显示了单件服饰在较低分辨率(28x28 像素)下的效果:

服装

1.3.2.1 需求:

标签类别
0T 恤衫/上衣
1裤子
2套衫
3裙子
4外套
5凉鞋
6衬衫
7运动鞋
8包包

1.3.2.2 步骤分析和代码实现:

  • 读取数据集:

  • 从datasets中获取相应的数据集,直接有训练集和测试集

class SingleNN(object):def __init__(self):(self.train, self.train_label), (self.test, self.test_label) = keras.datasets.fashion_mnist.load_data()
  • 进行模型编写

  • 双层:128个神经元,全连接层10个类别输出

class SingleNN(object):model = keras.Sequential([keras.layers.Flatten(input_shape=(28, 28)),keras.layers.Dense(128, activation=tf.nn.relu),keras.layers.Dense(10, activation=tf.nn.softmax)])

这里我们model只是放在类中,作为类的固定模型属性

激活函数的选择

涉及到网络的优化时候,会有不同的激活函数选择有一个问题是神经网络的隐藏层和输出单元用什么激活函数。之前我们都是选用 sigmoid 函数,但有时其他函数的效果会好得多,大多数通过实践得来,没有很好的解释性。

可供选用的激活函数有:

  • tanh 函数(the hyperbolic tangent function,双曲正切函数):

效果比 sigmoid 函数好,因为函数输出介于 -1 和 1 之间。

注 :tanh 函数存在和 sigmoid 函数一样的缺点:当 z 趋紧无穷大(或无穷小),导数的梯度(即函数的斜率)就趋紧于 0,这使得梯度算法的速度会减慢。

  • ReLU 函数(the rectified linear unit,修正线性单元)

当 z > 0 时,梯度始终为 1,从而提高神经网络基于梯度算法的运算速度,收敛速度远大于 sigmoid 和 tanh。然而当 z < 0 时,梯度一直为 0,但是实际的运用中,该缺陷的影响不是很大。

  • Leaky ReLU(带泄漏的 ReLU):

Leaky ReLU 保证在 z < 0 的时候,梯度仍然不为 0。理论上来说,Leaky ReLU 有 ReLU 的所有优点,但在实际操作中没有证明总是好于 ReLU,因此不常用。

为什么需要非线性的激活函数

使用线性激活函数和不使用激活函数、直接使用 Logistic 回归没有区别,那么无论神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,就成了最原始的感知器了。

a [ 1 ] = z [ 1 ] = W [ 1 ] x + b [ 1 ] a^{[1]} = z^{[1]} = W^{[1]}x+b^{[1]} a[1]=z[1]=W[1]x+b[1]

a [ 2 ] = z [ 2 ] = W [ 2 ] a [ 1 ] + b [ 2 ] {a}^{[2]}=z^{[2]} = W^{[2]}a^{[1]}+b^{[2]} a[2]=z[2]=W[2]a[1]+b[2]

那么这样的话相当于

a [ 2 ] = z [ 2 ] = W [ 2 ] ( W [ 1 ] x + b [ 1 ] ) + b [ 2 ] = ( W [ 2 ] W [ 1 ] ) x + ( W [ 2 ] b [ 1 ] + b [ 2 ] ) = w x + b {a}^{[2]}=z^{[2]} = W^{[2]}(W^{[1]}x+b^{[1]})+b^{[2]}=(W^{[2]}W^{[1]})x+(W^{[2]}b^{[1]}+b^{[2]})=wx+b a[2]=z[2]=W[2](W[1]x+b[1])+b[2]=(W[2]W[1])x+(W[2]b[1]+b[2])=wx+b

  • 编译、训练以及评估
def compile(self):SingleNN.model.compile(optimizer=tf.train.AdamOptimizer(),loss=tf.keras.losses.sparse_categorical_crossentropy,metrics=['accuracy'])return Nonedef fit(self):SingleNN.model.fit(self.train, self.train_label, epochs=5)return Nonedef evaluate(self):test_loss, test_acc = SingleNN.model.evaluate(self.test, self.test_label)print(test_loss, test_acc)return None

1.3.2.1 打印模型

  • model.summary():查看模型结构

1.3.2.2 手动保存和回复模型

  • 目的:防止训练长时间,出现意外导致重新训练
  • model.save_weights('./weights/my_model')
  • model.load_weights('./weights/my_model')
SingleNN.model.save_weights("./ckpt/SingleNN")def predict(self):# 直接使用训练过后的权重测试if os.path.exists("./ckpt/checkpoint"):SingleNN.model.load_weights("./ckpt/SingleNN")predictions = SingleNN.model.predict(self.test)print(np.argmax(predictions, 1))return

1.3.2.3 添加Tensorboard观察损失等情况

# 添加tensoboard观察tensorboard = keras.callbacks.TensorBoard(log_dir='./graph', histogram_freq=0,write_graph=True, write_images=True)SingleNN.model.fit(self.train, self.train_label, epochs=5, callbacks=[tensorboard])

未完待续, 同学们请等待下一期

全套笔记资料代码移步: 前往gitee仓库查看

感兴趣的小伙伴可以自取哦,欢迎大家点赞转发~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/819221.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI - 提示词意外收获 (5)

提示词&#xff1a; A soft pink rose with opalescent leaves, located in a surreal desert under the light of a binary star system, The dual shadows and contrasting lights create a dreamlike quality, emphasizing the roses unique beauty,翻译: 一种柔软的粉红…

【位运算 贪心】2835. 使子序列的和等于目标的最少操作次数

算法可以发掘本质&#xff0c;如&#xff1a; 一&#xff0c;若干师傅和徒弟互有好感&#xff0c;有好感的师徒可以结对学习。师傅和徒弟都只能参加一个对子。如何让对子最多。 二&#xff0c;有无限多1X2和2X1的骨牌&#xff0c;某个棋盘若干格子坏了&#xff0c;如何在没有坏…

数字乡村创新实践推动农业现代化发展:科技赋能农业产业升级、提升农民收入水平与乡村治理效能

随着信息技术的迅猛发展和数字化转型的深入推进&#xff0c;数字乡村创新实践已成为推动农业现代化发展的重要引擎。数字技术的广泛应用不仅提升了农业生产的智能化水平&#xff0c;也带动了农民收入的增加和乡村治理的现代化。本文旨在探讨数字乡村创新实践如何科技赋能农业产…

2016NOIP普及组真题 4. 魔法阵

线上OJ&#xff1a; 一本通&#xff1a;http://ybt.ssoier.cn:8088/problem_show.php?pid1976 本题作为第四题&#xff0c;想拿满分有难度。但是暴力拿些分还是做得到的。 满分需要用 前缀和 来化简for循环。 核心语句&#xff1a; $ x_a < x_b < x_c < x_d $ ① $ …

vue webpack打包配置生成的源映射文件不包含源代码内容、加密混淆压缩

前言&#xff1a;此案例使用的是vue-cli5 一、webpack源码泄露造成的安全问题 我们在打包后部署到服务器上时&#xff0c;能直接在webpack文件下看到我们项目源码&#xff0c;代码检测出来是不安全的。如下两种配置解决方案&#xff1a; 1、直接在项目的vue.config.js文件中加…

Android 使用ping命令判断当前网络状态

一. 介绍 ping命令是用来测试和诊断网络连接问题的基本命令&#xff0c;当然我们的终端设备&#xff08;手机/平板/车机&#xff09;都可以用这个命令来判断当前网络是否有流量的状态&#xff0c;本篇文章主要介绍Linux的ping命令&#xff0c;因为Android系统也是使用了Linux内…

OpenAI官宣位于东京的首个亚洲办公室,并将发布专为日语优化的GPT-4定制模型!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

科技云报道:AI大模型疯长,存储扛住了吗?

科技云报道原创。 AI大模型正在倒逼数字基础设施产业加速升级。 过去一年半&#xff0c;AI大模型标志性的应用相继出现&#xff0c;从ChatGPT到Sora一次次刷新人们的认知。震撼的背后&#xff0c;是大模型参数指数级的增长。 这种数据暴涨的压力&#xff0c;快速传导到了大模…

Unity 3D定点数物理引擎实战系列:BEPU物理引擎碰撞计算与碰撞规则的架构与设计

前面我们讲解了如何监听物理引擎的碰撞事件, 在物理引擎内核中如何架构与设计碰撞规则,使得物理Entity与周围的物理环境产生碰撞时&#xff0c;如何灵活的控制物理碰撞&#xff0c;本节給大家详细的讲解BEPUphysicsint 物理引擎内部是如何管理与控制碰撞规则的。本文主要讲解3个…

HTML的超链接

前言&#xff1a; 如图&#xff0c;我们在浏览网页时经常可以看到这样的字体&#xff08;点击便跳转到了别的地方了&#xff09;&#xff0c;今日就和各位一起学习一下超链接的相关知识。 相关知识1&#xff1a; 超链接的标签为&#xff1a;a ~使用格式为&#xff1a; <a h…

node.js服务器静态资源处理

前言&#xff1a;node.js服务器动态资源处理见 http://t.csdnimg.cn/9D8WN 一、什么是node.js服务器静态资源&#xff1f; 静态资源服务器指的是不会被服务器的动态运行所改变或者生成的文件. 它最初在服务器运行之前是什么样子, 到服务器结束运行时, 它还是那个样子. 比如平…

单元测试四大过程

单元测试四大过程&#xff08;蓝桥课学习笔记&#xff09; 单元测试过程 单元测试是软件测试过程中的一个关键环节&#xff0c;它与集成测试、系统测试一样&#xff0c;分为测试策划、测试设计、测试执行和测试总结几个阶段。 单元测试过程中每个阶段需要完成的主要工作如下&…

数据结构排序算法

排序也称排序算法(SortAlgorithm)&#xff0c;排序是将一组数据&#xff0c;依指定的顺序进行排列的过程。 分类 内部排序【使用内存】 指将需要处理的所有数据都加载到内部存储器中进行排序插入排序 直接插入排序希尔排序 选择排序 简单选择排序堆排序 交换排序 冒泡排序快速…

用html写文本变形动画

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>文本变形动画</title><link rel"stylesheet" href"./style.css"> </head> <body> <!-- 两个文本部分…

广东莱斯广告,6.8米UV喷印推动粤东喷绘产业升级

广东莱斯广告作为汕头市大型的广告服务运营商,近日迎来了一件值得庆祝的事情:彩神6.8米UV喷印机运行一周年,销售服务商深圳嘉豪总经理李伟特地前来回访。该设备是深圳润天智数字设备股份有限公司开发的全球首台搭载XTRA6800H柯尼卡喷头的设备,设备特点是:1.色彩艳丽;2.超宽喷印…

记录flume运行时报NullPointerException异常

【背景说明】 我要起一个将kafka上的topic_log主题中的数据上传到hdfs上的flume进程。 这是我的flume配置文件脚本&#xff1a; #定义组件 a1.sourcesr1 a1.channelsc1 a1.sinksk1#配置source1 a1.sources.r1.type org.apache.flume.source.kafka.KafkaSource a1.sources.r…

《Kubernets证书篇:基于Kylin V10+ARM架构CPU修改K8S 1.26.15版本证书时间限制》

一、背景 Kubernetes 默认的证书有效期只有1年&#xff0c;因此需要每年手动更新一次节点上面的证书&#xff0c;特别麻烦而且更新过程中可能会出现问题&#xff0c;因此我们要对 Kubernetes 的 SSL 证书有效期进行修改&#xff0c;这里将证书的时间限制修改为100年。 环境信息…

112 arcpy 发布 mxd地图文件 到 arcgis服务器 为 地图服务

前言 此文档主要是记录一下 最近的一次机遇 arcpy 来发布 地图文件到 arcgis服务器 上面 arcpy 主要是来自于 ArcGIS_Desktop_105_154030.zip 安装之后会在 python 的安装目录 安装另外的一份带 arcgis 的 python 环境, 然后 本文相关类库 也是基于 这个 arcpy 的 python 环境…

web实战项目环境部署(LNMP)

环境搭建准备 1、在本机安装VMware虚拟机&#xff0c;实际工作中&#xff0c;使用的是云服务器 2、在虚拟机上安装并运行Linux系统 3、在本机上安装好远程连接工具&#xff08;xshell/FinalShell&#xff09;&#xff0c;通过远程连接工具连接到虚拟机 4、关闭linux上的防火…

深度学习之PyTorch实现卷积神经网络(CNN)

在深度学习领域&#xff0c;卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;是一种非常强大的模型&#xff0c;专门用于处理图像数据。CNN通过卷积操作和池化操作来提取图像中的特征&#xff0c;具有较好的特征学习能力&#xff0c;特别适用…