[python] 深度学习基础------人工神经网络实现鸢尾花分类(三)

简介: [python] 深度学习基础------人工神经网络实现鸢尾花分类(三)

张量相关知识



简介


张量(Tensor):多维数组(列表)


阶:张量的维数


张量可以表示0阶到n阶数组(列表)如图:

image.png


0阶张量叫做标量  表示的是一个单独的数  如123。Tensorflow中的Tensor就是张量,是多维数组(列表)。阶表示张量的维数。


1阶张量叫做向量  表示的是一个一维数组  比如列表[1,2,3]  


2阶张量叫做矩阵  表示二维数组  可以有i行j列个元素  每个元素可用行号列号索引找到  如矩阵m  


判断张量是几阶的就看有几个[] 可以有n阶


张量可以表示0阶到n阶的数组


Tensorflow的数据类型


Tensorf low的数据类型有32位整型,32位浮点、64位浮点,布尔型  字符串型等等


如何创建一个Tensor(张量)


constant()

tf.constant(张量内容,dtype=数据类型(可选))


我们可以使用constant()创建一个张量


第一个参数指定这个张量的内容


第二个参数指定这个张量的数据类型


举例:


import tensorflow as tf  
a=tf.constant([1,5],dtype=tf.int64)  
print(a)
print(a.dtype)  
print(a.shape)
运行结果:
<tf.Tensor([1,5], shape=(2 , ) , dtype=int64)
<dtype: 'int64'>  (2,)


这个例子是创建一个一阶张量  里面有两个元素  指定数据类型是64为整型赋值给a

打印出a  打印出a的数据类型  打印出a的形状


运行结果:


直接打印a会输出张量的所有信息


包括张量的内容、 张量的形状和张量的数据类型


张量的形状看shape的逗号隔开了几个数字   逗号隔开了几个数字  这个张量就是几维的


在这个例子中隔开了一个数字  说明是以为张量    这个数字是2说明张量里有两个元素

也就是这里的数值1  和  5


将numpy的数据类型转换为Tensor数据类型

tf. convert_to_tensor(数据名,dtype=数据类型((可选))


很多时候数据是由numpy格式给出


我们可以使用convert to tensor ()把它变成Tensor格式


b = tf.convert_to_tensor( a,  dtype=tf.int64 )  


这条语句就把numpy格式a变成了Tensor格式b


举例:

import tensorflow as tf  
import numpy as np
a = np.arange(0,5)
b = tf.convert_to_tensor(a,dtype=tf.int64)  
print(a)
print(b)
运行结果:
[0 1 2 3 4]
tf.Tensor([0 1 2 3 4], shape=( 5 , ), dtype=int64)

 

创建特殊张量

创建全为0的张量tf. zeros(维度)


创建全为1的张量tf. ones(维度)


创建全为指定值的张量tf. fill(维度,指定值)指定值)


同样我们可以用zeros ()创建全为0的张量


如:tf. zeros([2, 3])创建了一个二维张量  


一维:直接写数字


二维:【行列】


多维度:方括号里写每个维度的元素个数  中间用逗号隔开


举例:

a = tf.zeros([2, 3])  
b = tf.ones(4)
c = tf.fill([2, 2], 9)  
print(a)
print(b)  
print(c)
运行结果:
tf.Tensor([[0. 0. 0.] [0. 0. 0.]], shape=(2, 3), dtype=float32)
tf.Tensor([1. 1. 1. 1.], shape=(4, ), dtype=float32)
tf.Tensor([[9 9] [9 9]], shape=(2, 2), dtype=int32)


如上代码:创建了一个  两行三列  的  全0  的  二维张量a

                 创建了一个  一行四列  的  全1  的  一维张量b

                 创建了一个  二行二列  的  全9  的  一维张量b


创建符合正态分布的张量

生成正态分布的随机数,默认均值为0,标准差为1


在编写代码时:我们常常随机生成初始化参数    要符合正态分布


可用函数 random.normal 生成指定维度的符合正太分部的张量

tf. random.normal (维度,mean=均值,stddev=标准差)


集中


有时候我们希望生成的随机数更集中一些


所以可以使用 random. truncated_normal () 函数

tf. random.truncated_normal (维度,mean=均值,stddev=标准差)


在tf.truncated_normal中如果随机生成数据的取值在(μ-2σ,μ+2σ)之外  则重新进行生成,保证了生成值在均值附近。

image.png


这个函数可以保证生成的随机数在u士2σ(均值正负两倍标准差)之内


举例:

d = tf.random.normal ([2, 2], mean=0.5, stddev=1)  print(d)
e = tf.random.truncated_normal ([2, 2], mean=0.5, stddev=1)  print(e)
运行结果:
tf.Tensor(
[[0.7925745 0.643315 ]
[1.4752257 0.2533372]], shape=(2, 2), dtype=float32)
tf.Tensor(
[[ 1.3688478  1.0125661 ]
[ 0.17475659 -0.02224463]], shape=(2, 2), dtype=float32)
元素都在两倍标准差之内,数据更向均值0.5集中


比如random. normal ()生成两行两列的张量


里面的元素符合以0.5为均值1为标准差的分布


用random. Truncated_mormal ()生成两行两列的张量


里面的元素符合以0.5为均值   1为标准差的随机数


(数据会更向0.5集中) 生成的随机数在u士2σ(均值正负两倍标准差)之内


创建均匀分布的张量

生成均匀分布随机数  ( minval, maxval )

tf. random. uniform(维度,minval=最小值,maxval=最大值)


可以用random. uni form生成指定维度的均匀分布随机数


用minvalue给定随机数的最小值


用maxvalue给定随机数的最大值     注意:前闭后开区间


如这个例子就生成了两行两列的张量


其中的每个元素都符合在0和1之间的平均分布


举例:

f = tf.random.uniform([2, 2], minval=0, maxval=1)  print(f)
运行结果:
tf.Tensor(
[[0.28219545 0.15581512]
[0.77972126 0.47817433]], shape=(2, 2), dtype=float32)
相关文章
|
3天前
|
机器学习/深度学习 自然语言处理 语音技术
深度学习500问——Chapter06: 循环神经网络(RNN)(3)
深度学习500问——Chapter06: 循环神经网络(RNN)(3)
18 3
|
3天前
|
存储 前端开发 机器人
Python网络数据抓取(6):Scrapy 实战
Python网络数据抓取(6):Scrapy 实战
21 2
|
1天前
|
机器学习/深度学习 JSON PyTorch
图神经网络入门示例:使用PyTorch Geometric 进行节点分类
本文介绍了如何使用PyTorch处理同构图数据进行节点分类。首先,数据集来自Facebook Large Page-Page Network,包含22,470个页面,分为四类,具有不同大小的特征向量。为训练神经网络,需创建PyTorch Data对象,涉及读取CSV和JSON文件,处理不一致的特征向量大小并进行归一化。接着,加载边数据以构建图。通过`Data`对象创建同构图,之后数据被分为70%训练集和30%测试集。训练了两种模型:MLP和GCN。GCN在测试集上实现了80%的准确率,优于MLP的46%,展示了利用图信息的优势。
9 1
|
2天前
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:生成对抗网络(GAN)
使用Python实现深度学习模型:生成对抗网络(GAN)
18 3
|
2天前
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:自动编码器(Autoencoder)
使用Python实现深度学习模型:自动编码器(Autoencoder)
9 0
|
2天前
|
网络协议 Unix Python
Python编程-----网络通信
Python编程-----网络通信
8 1
|
3天前
|
缓存 负载均衡 应用服务中间件
python怎么发起网络请求?
python怎么发起网络请求?
9 0
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
一文搞懂深度学习:神经网络基础部分
一文搞懂深度学习:神经网络基础部分
9 0
|
3天前
|
机器学习/深度学习 算法 Scala
深度学习500问——Chapter06: 循环神经网络(RNN)(4)
深度学习500问——Chapter06: 循环神经网络(RNN)(4)
15 1
|
3天前
|
机器学习/深度学习 算法 搜索推荐
深度学习500问——Chapter06: 循环神经网络(RNN)(2)
深度学习500问——Chapter06: 循环神经网络(RNN)(2)
15 3

热门文章

最新文章