[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天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的奥秘:探索神经网络的核心原理
本文将深入浅出地介绍深度学习的基本概念,包括神经网络的结构、工作原理以及训练过程。我们将从最初的感知机模型出发,逐步深入到现代复杂的深度网络架构,并探讨如何通过反向传播算法优化网络权重。文章旨在为初学者提供一个清晰的深度学习入门指南,同时为有经验的研究者回顾和巩固基础知识。
25 11
|
3天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的魔法:如何用神经网络解锁数据的奥秘
在人工智能的璀璨星空中,深度学习犹如一颗最亮的星,它以其强大的数据处理能力,改变了我们对世界的认知方式。本文将深入浅出地介绍深度学习的核心概念、工作原理及其在不同领域的应用实例,让读者能够理解并欣赏到深度学习技术背后的奇妙和强大之处。
15 3
|
1天前
|
机器学习/深度学习 数据采集 TensorFlow
使用Python实现深度学习模型:智能药物研发与筛选
使用Python实现深度学习模型:智能药物研发与筛选
32 15
|
3天前
|
机器学习/深度学习 数据采集 存储
使用Python实现深度学习模型:智能保险风险评估
使用Python实现深度学习模型:智能保险风险评估
32 12
|
3天前
|
JSON API 开发者
Python网络编程新纪元:urllib与requests库,让你的HTTP请求无所不能
【9月更文挑战第9天】随着互联网的发展,网络编程成为现代软件开发的关键部分。Python凭借简洁、易读及强大的特性,在该领域展现出独特魅力。本文介绍了Python标准库中的`urllib`和第三方库`requests`在处理HTTP请求方面的优势。`urllib`虽API底层但功能全面,适用于深入控制HTTP请求;而`requests`则以简洁的API和人性化设计著称,使HTTP请求变得简单高效。两者互补共存,共同推动Python网络编程进入全新纪元,无论初学者还是资深开发者都能从中受益。
21 7
|
1天前
|
API 开发者 Python
揭秘Python网络请求的幕后英雄:requests与urllib的恩怨情仇
【9月更文挑战第10天】在Python的网络请求领域,urllib与requests犹如武林中的两大高手,各自展现了独特的魅力。urllib作为标准库成员,自Python诞生以来便承担着网络请求的任务,以其稳定性和全面性著称。然而,其复杂的API让不少开发者望而却步。
8 2
|
2天前
|
数据采集 JavaScript 前端开发
构建你的首个Python网络爬虫
【9月更文挑战第8天】本文将引导你从零开始,一步步构建属于自己的Python网络爬虫。我们将通过实际的代码示例和详细的步骤解释,让你理解网络爬虫的工作原理,并学会如何使用Python编写简单的网络爬虫。无论你是编程新手还是有一定基础的开发者,这篇文章都将为你打开网络数据获取的新世界。
|
5天前
|
机器学习/深度学习 人工智能 算法
深度学习的奥秘:探索神经网络的魔法
在本文中,我们将一起踏上一场奇妙的旅程,探索深度学习背后的科学奥秘。通过简单易懂的语言和有趣的比喻,我们将解锁神经网络的强大力量,并了解它们如何改变我们的世界。无论你是科技爱好者还是对人工智能充满好奇的朋友,这篇文章都将为你打开一扇通往未来的大门。
|
2天前
|
机器学习/深度学习 数据采集 数据可视化
深度学习实践:构建并训练卷积神经网络(CNN)对CIFAR-10数据集进行分类
本文详细介绍如何使用PyTorch构建并训练卷积神经网络(CNN)对CIFAR-10数据集进行图像分类。从数据预处理、模型定义到训练过程及结果可视化,文章全面展示了深度学习项目的全流程。通过实际操作,读者可以深入了解CNN在图像分类任务中的应用,并掌握PyTorch的基本使用方法。希望本文为您的深度学习项目提供有价值的参考与启示。
|
9天前
|
机器学习/深度学习 人工智能 算法
Python中实现简单神经网络
【9月更文挑战第2天】本文将通过Python编程语言,介绍如何从零开始构建一个简单的神经网络。我们将使用纯Python代码,不依赖任何外部库,来展示神经网络的核心概念和工作原理。文章将详细解释每个步骤,并最终实现一个能够进行基本模式识别的神经网络模型。通过这篇文章,读者可以对神经网络有一个直观的理解,并为进一步学习深度学习打下坚实的基础。