《Python深度学习-Keras》精华笔记1:深度学习数学基础及张量

news2024/10/6 6:01:23

公众号:尤而小屋
作者:Peter
编辑:Peter

持续更新《Python深度学习》一书的精华内容,仅作为学习笔记分享。

本文是第一篇:深度学习中的数学基础和张量操作

In [1]:

import pandas as pd
import numpy as np

import tensorflow as tf

加载MNIST数据集

MNIST数据集是一个大型的手写数字识别数据集,由美国国家标准技术研究所(NIST)收集并公开提供。该数据集包含约70000张手写数字图像,每张图像都是28x28像素大小的,灰度模式。

这些图像分为两个部分:训练集和测试集。训练集包含60000张图像,用于训练和调整模型参数;测试集包含10000张图像,用于评估模型的性能。

MNIST数据集是机器学习领域中非常常用的的一种数据集,特别是对于初学者来说。它是一个很好的起点,可以用来了解和比较各种机器学习算法的性能,例如神经网络、支持向量机、决策树等。通过训练和测试,可以评估各种算法在手写数字识别任务上的性能,以及它们的泛化能力。

In [2]:

from keras.datasets import mnist

(train_images, train_labels), (test_images, test_labels) = mnist.load_data()

查看数据基本信息:

In [3]:

train_images.shape

Out[3]:

(60000, 28, 28)

In [4]:

train_labels.shape

Out[4]:

(60000,)

In [5]:

test_images.shape

Out[5]:

(10000, 28, 28)

In [6]:

test_labels.shape

Out[6]:

(10000,)

显示数字图像

In [7]:

digit = train_images[9]
digit[:5]

Out[7]:

array([[  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0],
       [  0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
          0,   0,   0,   0,   0,   0,   0,   0,   0, 189, 190,   0,   0,
          0,   0]], dtype=uint8)

In [8]:

import matplotlib.pyplot as plt

plt.imshow(digit, cmap=plt.cm.binary)
plt.show()

准备图像数据

数据缩放(除以255)和数据类型转化,神经网络只能处理浮点数类型数据float32

In [9]:

train_images = train_images.reshape((60000, 28*28))
train_images = train_images.astype("float32") / 255

test_images = test_images.reshape((10000, 28*28))
test_images = test_images.astype("float32") / 255

标签分类(有修改)

In [10]:

# 标签实施独热码to_categorical

# 原文
# from keras.utils import to_categorical

# 修改
from tensorflow.keras.utils import to_categorical

train_labels = to_categorical(train_labels)
test_labels = to_categorical(test_labels)

In [11]:

train_labels

Out[11]:

array([[0., 0., 0., ..., 0., 0., 0.],
       [1., 0., 0., ..., 0., 0., 0.],
       [0., 0., 0., ..., 0., 0., 0.],
       ...,
       [0., 0., 0., ..., 0., 0., 0.],
       [0., 0., 0., ..., 0., 0., 0.],
       [0., 0., 0., ..., 0., 1., 0.]], dtype=float32)

构建网络架构

In [12]:

from keras import models
from keras import layers

network = models.Sequential()  # 实例化
# 添加两个全连接层(密集连接层):Dense层
network.add(layers.Dense(512,  
                         activation='relu',
                         input_shape=(28*28, )))  # input_shape的第一个参数如何确定
# 第二个全连接层:softmax层,返回10个概率值,总和为1
network.add(layers.Dense(10,activation='softmax')) 

编译网络模型

In [13]:

network.compile(optimizer="rmsprop",   # 优化器
                loss="categorical_crossentropy",  #  损失函数
                metrics=["accuracy"]   # 评价指标:分类精度
               )

模型拟合fit

In [14]:

network.fit(train_images, 
            train_labels, 
            epochs=5,
            batch_size=128)
Epoch 1/5
469/469 [==============================] - 2s 4ms/step - loss: 0.2650 - accuracy: 0.9227
Epoch 2/5
469/469 [==============================] - 2s 4ms/step - loss: 0.1075 - accuracy: 0.9688
Epoch 3/5
469/469 [==============================] - 2s 4ms/step - loss: 0.0714 - accuracy: 0.9780
Epoch 4/5
469/469 [==============================] - 2s 4ms/step - loss: 0.0524 - accuracy: 0.9844
Epoch 5/5
469/469 [==============================] - 2s 4ms/step - loss: 0.0403 - accuracy: 0.9881

Out[14]:

<keras.callbacks.History at 0x24660809d60>

显示了网络在训练数据上的损失loss和精度accuracy

模型评价

In [15]:

test_loss, test_acc = network.evaluate(test_images, test_labels)
313/313 [==============================] - 0s 863us/step - loss: 0.0685 - accuracy: 0.9788

模型在训练集上表现得很好,但是在测试集上性能表现得要差些,这种现象称之为过拟合

神经网络的数据张量

标量-0D张量

In [16]:

# 仅仅包含单个数字,包含0个轴(ndim)
import numpy as np

x = np.array(12)
x

Out[16]:

array(12)

In [17]:

x.ndim     # 查看轴的个数,称之为rank

Out[17]:

0

In [18]:

x.size   # 表示张量中的元素个数

Out[18]:

1

向量-1D张量

In [19]:

x = np.array([9,8,1,12])
x

Out[19]:

array([ 9,  8,  1, 12])

In [20]:

x.ndim

Out[20]:

1

In [21]:

x.size

Out[21]:

4

矩阵-2D张量

In [22]:

x = np.array([[9,8,1,12],
              [2,3,4,5],
              [10,5,2,7]
             ])
x

Out[22]:

array([[ 9,  8,  1, 12],
       [ 2,  3,  4,  5],
       [10,  5,  2,  7]])

In [23]:

x.ndim

Out[23]:

2

In [24]:

x.size

Out[24]:

12

关键属性

In [25]:

# 1、轴的个数ndim

x.ndim

Out[25]:

2

In [26]:

# 2、形状shape

x.shape

Out[26]:

(3, 4)

In [27]:

# 3、数据类型

x.dtype

Out[27]:

dtype('int32')

In [28]:

# 4、元素个数size

x.size

Out[28]:

12

现实数据中的张量

  • 向量:2D, (samples, features)
  • 时间序列数据:3D, (samples, timesteps, features)
  • 图像:4D,(smaples, height, width, channels) or (samples, channels, height, width)
  • 视频: 5D,(smaples, frames,height, width, channels) or (samples, frames,channels, height, width)

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

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

相关文章

【linux--->传输层协议】

文章目录 [TOC](文章目录) 一、端口号1.端口号划分范围2.常用知名端口号 二、网络命令1.netstat 命令2.pidof 命令 三、UDP协议1.格式2.协议的分离和合并3.特点4.缓冲区 四、TCP协议1.格式2.4位的数据偏移3.确认应答机制4.序号与确认序号5.16位窗口6.标志位7.超时重传8.三次握手…

腾讯云TencentOS Server镜像系统常见问题解答

腾讯云TencentOS Server镜像是腾讯云推出的Linux操作系统&#xff0c;完全兼容CentOS生态和操作方式&#xff0c;TencentOS Server操作系统为云上运行的应用程序提供稳定、安全和高性能的执行环境&#xff0c;TencentOS可以运行在腾讯云CVM全规格实例上&#xff0c;包括黑石物理…

2023-07-31力扣每日一题

链接&#xff1a; 143. 重排链表 题意&#xff1a; 将链表L0 → L1 → … → Ln - 1 → Ln变成L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 解&#xff1a; 线性表法还是好写的 这边搞一下翻转法&#xff0c;快慢指针求翻转点&#xff08;翻转后面一半然后双指针合并…

【运维】linkis1.3.2版本保姆级安装

文章目录 一.建议配置1 软硬件环境建议配置1.1 Linux 操作系统版本要求1.2 服务器建议配置1.3 软件要求1.4 客户端 Web 浏览器要求2.3 LDAP设置&#xff08;暂时不需要&#xff09; 二. 下载三. 安装部署linkis server端1. 首次安装准备事项1.1 Linux服务器1.2 添加部署用户 2.…

《入门级-Cocos2dx4.0 塔防游戏开发》---第四课:欢迎界面开发(二)

目录 一、开发环境介绍 二、开发内容 2.1. logo变化动画 2.2. logo帧动画 2.3 start按钮移动动画 2.4 Credite移动动画 三、显示效果 四、知识总结 1. 移动动画 2. 变大变小动画 3. 延时效果 4. 动画组 一、开发环境介绍 操作系统&#xff1a;UOS1060专业版本。 c…

Java常用API:Math、Syetem、Runtime、BigDecimal

Math类 //目标:了解下Nath类提供的常见方法。 // 1、public static int abs(int a):取绝对值&#xff08;拿到的结果一定是正数&#xff09; //public static double abs(double a) system.out.println(Math.abs(-12)); // 12 system.out.println(Math.abs(123));// 123 system…

upload-labs靶场全通关

upload-labs靶场全通关 pass-1pass-2pass-3pass-4pass-5pass-6pass-7pass-8pass-9pass-10pass-11pass-12pass-13pass-14pass-15pass-16pass-17pass-18pass-19pass-20 pass-1 首先我们新建一个php的webshell文件 在这里我写了一个rabb1t.php的shell文件 内容为这个样子 然后我…

【LeetCode经典算法】链表反转

题目 题目&#xff1a;给定单链表头节点&#xff0c;将单链表的链接顺序反转过来 例&#xff1a; 输入&#xff1a;1->2->3->4->5 输出&#xff1a;5->4->3->2->1 要求&#xff1a;按照两种方式实现 解决办法 方式一&#xff1a; 思路 单链表的结…

DH算法、DHE算法、ECDHE算法演进

ECDHE 算法解决了 RSA 算法不具备前向安全的性质 和 DH 算法效率低下的问题。 ECDHE 算法具有前向安全。所以被广泛使用。 由什么演变而来 DH 算法 -- > DHE 算法 -- > ECDHE 算法 DH 算法是非对称加密算法&#xff0c;该算法的核心数学思想是离散对数。 核心数学思…

wms-3代货架标签(电池版本)接口文档

一、查询标签信息接口 接口类型&#xff1a;POST, 参数格式&#xff1a;json array 链接形式&#xff1a; http://localhost/wms/associate/getTagsMsg 代码形式&#xff1a; { url : http://localhost/wms/associate/getTagsMsg, requestMethed : GET, requestParamet…

亚马逊买家账号ip关联怎么处理

对于亚马逊买家账号&#xff0c;同样需要注意IP关联问题。在亚马逊的眼中&#xff0c;如果多个买家账号共享相同的IP地址&#xff0c;可能会被视为潜在的操纵、违规或滥用行为。这种情况可能导致账号受到限制或处罚。 处理亚马逊买家账号IP关联问题&#xff0c;建议采取以下步骤…

有哪些很奇PA,但又比较少人知道的病毒?

世界上有哪些很奇PA&#xff08;或者说很搞笑&#xff09;&#xff0c;但又比较少人知道的病毒&#xff1f; ①温州皮鞋厂病毒 中毒迹象&#xff1a;播放出我们熟悉的《温州皮鞋厂倒闭了》bgm&#xff0c;并出现“捍卫版权&#xff0c;盗&#xff08;到&#xff09;此为止”…

DAY15_VUEElement综合案例

目录 1 VUE1.1 概述1.1.1 Vue js文件下载 1.2 快速入门1.3 Vue 指令1.3.1 v-bind & v-model 指令1.3.2 v-on 指令1.3.3 条件判断指令1.3.4 v-for 指令 1.4 生命周期1.5 案例1.5.1 需求1.5.2 查询所有功能1.5.3 添加功能 2 Element2.0 element-ui js和css和字体图标下载2.1 …

C++ 类和对象篇(二) this指针

目录 一、this指针概念 二、this指针的特性 三、this指针存在哪里&#xff1f; 四、this指针可以为空吗&#xff1f; 一、this指针概念 1.是什么&#xff1f; 它是类内非静态成员函数的隐含形参&#xff0c;this指针指向调用该函数的对象。 this指针是C编译器给每个“非静态…

适应于Linux系统的三种安装包格式 .tar.gz、.deb、rpm

deb、rpm、tar.gz三种Linux软件包的区别 rpm包-在红帽LINUX、SUSE、Fedora可以直接进行安装&#xff0c;但在Ubuntu中却无法识别&#xff1b; deb包-是Ubuntu的专利&#xff0c;在Ubuntu中双击deb包就可以进入自动安装进程&#xff1b; tar.gz包-在所有的Linux版本中都能使用…

【100天精通python】Day21:文件及目录操作_文件的权限处理和批量处理

目录 专栏导读 1. 文件的权限处理 1.1 查询文件权限 1.2 修改文件权限 2 文件的批量处理 2.1 使用os模块和os.listdir()函数 2.2 使用glob模块 2.3 使用shutil模块 2.3.1 批量复制文件 2.3.2 批量移动文件 2.3.3 批量删除文件 2.3.4 批量创建目录 专栏导读 专栏订阅…

Python程序开发案例教程PDF,python程序开发案例教程

大家好&#xff0c;本文将围绕Python程序开发案例教程黑马程序员电子版书展开说明&#xff0c;Python程序开发案例教程黑马课后答案是一个很多人都想弄明白的事情&#xff0c;想搞清楚Python程序开发案例教程pdf黑马程序员需要先了解以下几个事情。 1、python软件开发的案例有哪…

多赛道出海案例,亚马逊云科技为企业提供全新解决方案实现高速增长

数字化浪潮之下&#xff0c;中国企业的全球化步伐明显提速。从“借帆出海”到“生而全球化”&#xff0c;中国企业实现了从低端制造出口&#xff0c;向技术创新和品牌先导的升级。为助力中国企业业务高效出海&#xff0c;亚马逊云科技于2023年6月9日在深圳大中华喜来登酒店举办…

使用阿里云DataX完成数据同步

DataX DataX 是阿里云 DataWorks 数据集成的开源版本&#xff0c;在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, datab…

Unity-缓存池

一、.基础缓存池实现 继承的Singleton脚本为 public class Singleton<T> where T : new() {private static T _instance;public static T GetIstance(){if (_instance null)_instance new T();return _instance;} } 1.PoolManager using System.Collections; using S…