机器学习—TensorFlow

当你实现新的神经网络时,可以有一个一致的框架来考虑如何表示你的数据,今天用代码做事情的方式有一个不幸的事情,很多年前,Numpy首先被创建,并成为Python中线性代数的标准库,很久以后,谷歌大脑团队创建张量流,所以不幸的是,在Numpy中表示数据的方式之间存在一些不一致之处,所以了解这些惯例是很好的,这样你就可以实现正确的代码,并希望在你的神经网络中运行。

如何使用numpy和tensorflow表示数据

假设你有一个这样的数据集,从咖啡的例子,会这样写X,为什么这里有一个双方括号?来看看向量和矩阵,如果你认为向量和矩阵很复杂,数学概念不用担心,可以举几个具体的例子,就可以使用矩阵和向量来实现你的网络。

让我们从一个矩阵的例子开始,这是一个有两行三列的矩阵

,因为有两行三列,所以称为之二乘三矩阵,所以约定矩阵的维数是行数乘以列数,所以在存储这个矩阵的代码中,这个二乘三矩阵只需把这些数字写成X=np点数组,就像右上角的一样,方括号告诉你[1,2,3]是这个矩阵的第一行,[4,5,6]是矩阵的第二行,然后这个输出方括号将第一行和第二行分组在一起,所以这将X设置为两个数组,所以矩阵只是一个由数字组成的二维数组。

再看一个例子,写出了另一个矩阵,它是一个四行二列的矩阵,所以这是一个按列数排列的行数矩阵,是一个四乘二矩阵,所以要把它存储在代码中,你会写成X=np数组,然后这里的语法存储这四行,所以这就创建了一个由这八个数字组成的二维数组。

矩阵可以有不同的维度,你看到一个二乘三矩阵和四乘二矩阵的例子,矩阵也可以是其他维度,就像一个接两个或者两个接一个,所以当将X设置为输入时,将特征向量X设置为等于带有两个方括号的NP数组[200,17],它的作用是,这将创建一个只有一行两列的一对一矩阵,看一个不同的例子,如果你把X定义为np,但现在这样写,这将创建一个二乘一的矩阵,因为第一行是数字200,第二行是17,所以它有相同的数字,但在二乘一而不是数学中的一乘二矩阵中,上边的这个示例也称为行向量,是一个向量,它只是一行,下边的例子叫做列向量,因为它是一个只有一列的向量,像这样用两个方括号的区别相对于像这样的一个方括号,上边的两个示例是两个d数组,其中一个维度恰好是1,一维向量的结果,所以这只是一个没有行或列的单D数组,虽然按照惯例,我们可以把X写成一列,与我们之前在第一道菜中所做的对比,把X写成这样,用一个方括号,这导致了所谓的Python一维向量代替二维矩阵,从技术上说,这不是一个接两个或两个接一个,它只是一个没有行或列的线性数组,但这只是一组数字。

当我们使用线性回归和逻辑回归时,我们用这些一个D向量来表示输入特征,带张量流的X,惯例是使用矩阵来表示数据,为什么会有这种转换约定?事实证明,tensorflow是为处理非常大的数据集而设计的,通过用矩阵而不是一条射线来表示数据,它让Tensorflow在内部的计算效率更高一点,因此,回到我们最初的示例,看看这个数据集中的第一个训练示例,它的特点是在17分钟内达到200摄氏度,我们会这样表现,所以这实际上是一个二乘矩阵,它恰好有一行两列来存储数字200,17,以防这看起来像很多细节和非常复杂的惯例,别担心,这一切都会变得更加清晰,可以自己看到代码的具体实现。

回到之前执行的的代码,神经网络中的传播或推理,当你计算一个1,一个实际上会是一个一乘三的矩阵,如果你打印出一个a1,会得到tf点张量点[0.2,0.7,0.3]的形状,shape=(1,3)指的是这是一个一乘三的矩阵,这是Tensorflow的说法,它是一个浮点数,意思是它是一个数字,它们可以用计算机中的三个二位内存表示小数点,下面是tensorflow团队创建的数据类型,为了有效地存储和执行矩阵上的计算,所以每当你看到张量,把它想象成这几张图片上的矩阵,从技术上讲,张量比矩阵更一般一点,把张量看作是表示矩阵的一种方式,所以在开头就说,有一种表实矩阵的张量流方法以及表示矩阵的笨拙方式,这是历史的产物,关于Numpy和Tensorflow是如何创建的,有两种方法来表示这些系统中的矩阵,事实上,如果你想拿一个,它是一个张量,想把它转换回一个数字数组,你可以使用此函数这样做,他将获取相同的数据,并以Numpy数组的形式返回,而不是以张量流数组或张量流矩阵的形式。

让我们看看第二层的激活输出是什么,这是我们之前得到的代码,第二层是一个密集的层,有一个单元和Z状结肠激活,a2是通过取第二层来计算的,把它应用到a1,所以a2可能是像0.8这样的数字,从技术上讲,这是一个接一个的矩阵,是一个具有一行和一列的二维数组,如果你打印a2,你可以看到它是一个只有一个元素的张量流张量,它是一个一个接一个的矩阵,又是一个浮点数,小数点后三位数,在计算机内存中占用三个二位,再一次,你可以从张量流转换,使用两个Numpy到Numpy矩阵的张量,这将变成一个numpy的数组。

通过这篇文章的学习,希望可以来让你了解数据是如何在Tensorflow中表示的,在Numpy中加载数据和操作数据,但是当将一个Numpy数组传递给TensorFlow时,TensorFlow喜欢将其转换为自己的内部格式------张量,然后利用张量高效操作,当你读出数据时,你可以将其保留位张量,也可以将其转换回Numpy数组,实际上这两个库可以很好的协同工作,但当你来回转换时,无论你使用的是Numpy数组还是张量,这只是需要意识到的事情。

相关推荐
Robot2519 分钟前
人形机器人赛道资本之争:“南”[智元机器人],“北”[银河通用]
人工智能·机器人
摆烂仙君1 小时前
摆烂仙君传——深度学习秘境奇缘
人工智能
学习前端的小z1 小时前
【GPTs】Front-end Expert:助力前端开发的智能工具
人工智能·gpt·chatgpt·aigc
使者大牙1 小时前
【LLM学习笔记】第四篇:模型压缩方法——量化、剪枝、蒸馏、分解
人工智能·深度学习·算法·机器学习
Matlab程序猿小助手1 小时前
【MATLAB源码-第222期】基于matlab的改进蚁群算法三维栅格地图路径规划,加入精英蚁群策略。包括起点终点,障碍物,着火点,楼梯。
开发语言·人工智能·算法·matlab·机器人·无人机
岛屿旅人1 小时前
2025-2026财年美国CISA国际战略规划(下)
网络·人工智能·安全·web安全·网络安全
卧式纯绿1 小时前
自动驾驶3D目标检测综述(三)
人工智能·python·深度学习·目标检测·3d·cnn·自动驾驶
ydl11282 小时前
机器学习周志华学习笔记-第7章<贝叶斯分类器>
笔记·学习·机器学习
ZOMI酱2 小时前
【AI系统】GPU 架构回顾(从2018年-2024年)
人工智能·架构
土豆炒马铃薯。3 小时前
【深度学习】Pytorch 1.x 安装命令
linux·人工智能·pytorch·深度学习·ubuntu·centos