栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

TensorFlow简单使用(基础篇)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

TensorFlow简单使用(基础篇)

目录

一、TensorFlow的数据类型

二、如何创建一个张量

三、常用函数 

1.强制转换、最大值、最小值

2.平均值、求和

 3.标记为可训练

 4.四则运算

5.平方、次方与开方 

6.矩阵相乘 

7.输入特征和标签配对

8.求出张量的梯度 

9.枚举函数 

 10.独热编码

11.概率转换函数 

12.自更新函数 

 13.最大值索引函数


我们为什么要学习TensorFlow?TensorFlow有什么作用?

TensorFlow是深度学习的一个重要的数据包,可以实现机器的深度学习。

一、TensorFlow的数据类型
tf.int,tf.floattf.int 32 ,tf.float 32,tf.float 64
tf.booltf.constant([True,False])
tf.stringtf.constant("Hello,world!")

二、如何创建一个张量

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

在下面的代码中,我们创建了一个一阶张量,指定数据类型为tf.float32

直接打印会输出张量的所有数据类型(张量的内容,张量的形状(张量的形状看逗号隔开了几个数字,隔开了几个数字,这个张量就是几维的,在下面的例子中,逗号隔开了三个数字,就说明这是一个三维张量),张量的数据类型)

import tensorflow as tf
x=tf.constant([5,1,3],dtype=tf.float32)
print(x)
print(x.dtype)
print(x.shape)

但是很多时候,我们的数据类型是numpy的,我们可以使用convert_to_tensor()将它变成Tensor数据类型

q=np.array([2,3,3,4,5,67])
w=tf.convert_to_tensor(q,dtype=tf.int64)
print(w)

 

我们还可以使用tf中的方法来创建我们的张量

tf.zeros(维度)创建全为0的张量
tf.ones(维度)创建全为1的张量
tf.fill(维度,指定值)创建全为指定值的张量
a=tf.zeros([2,3])
b=tf.ones(4)
c=tf.fill([3,3],9)
print(a)
print(b)
print(c)

生成正太分布的随机数,默认值均为0,标准差为1tf.random.normal(维度,mean=均值,stddev=标准差)
生成截断式正太分布的随机数tf.random.truncated_normal(维度,mean=均值,stddev=标准差)

 

a=tf.random.normal([4,4],mean=3,stddev=1)
print(a)
b=tf.random.truncated_normal([3,3],mean=0.5,stddev=1)
print(b)

生成均匀分布随机数[minval,maxval]tf.random.uniform(维度,minival=最小值,maxval=最大值)

 

a=tf.random.uniform([4,4],minval=0,maxval=1)
print(a)

三、常用函数 

1.强制转换、最大值、最小值
常用函数
强制tensor转换为该数据类型tf.cast(张量名,dtype=数据类型)
计算张量维度上元素的最小值tf.reduce_min(张量名)
计算张量维度上元素的最大值tf.reduce_max(张量名)
a=tf.constant([1.23,2.32,3.44,4.132],dtype=tf.float64)
print(a)
b=tf.cast(a,tf.int32)
print(b)
c=tf.reduce_min(a)
print(c)
d=tf.reduce_max(a)
print(d)

在一个二维张量中,我们饿可以通过条简介axis等于1或0来控制执行的维度

axis=0表示纵向操作,axis=1表示横向操作

2.平均值、求和
计算张量沿着指定维度的平均值tf.reduce_mean(张量名,axis=操作轴)
计算张量沿着指定维度的和tf.reduce_sum(张量名,axis=操作轴)
b=tf.random.truncated_normal([3,3],mean=0.5,stddev=1)
print(b)
a=tf.reduce_mean(b,axis=1)
print(a)
c=tf.reduce_sum(b,axis=0)
print(c)

 3.标记为可训练
将变量标记为可训练,被标记的变量会在反向传播中记录梯度信息tf.Variable()
w=tf.Variable(tf.random.normal([2,2],mean=0,stddev=1))
print(w)

 4.四则运算
加法tf.add(张量1,张量2)
减法tf.substract(张量1,张量2)
乘法tf.multiply(张量1,张量2)
除法tf.divide(张量1,张量2)
平方tf.square
次方tf.pow
开方tf.sqrt
矩阵乘法

tf.matmul

 (只有维度相同的张量才能够进行四则运算)

a=tf.constant([[1,2,3],[2,3,3]])
b=tf.constant([[-1,-2,-3],[-2,-3,-3]])
print(a)
print(b)
print(tf.add(a,b))
print(tf.subtract(a,b))
print(tf.multiply(a,b))
print(tf.divide(a,b))

5.平方、次方与开方 
计算某个张量的平方tf.square(张量名)
计算某个张量的n次方tf.pow(张量名,n次方数)
计算某个张量的开方tf.sqrt(张量名)

 

a=tf.fill([3,3],4.)
print(a)
print(tf.pow(a,3))
print(tf.square(a))
print(tf.sqrt(a))

6.矩阵相乘 
两个矩阵的相乘tf.matmul(矩阵1,矩阵2)
a=tf.fill([3,3],4.)
b=tf.fill([3,3],5.)
print(tf.matmul(a,b))

7.输入特征和标签配对

神经网络在传入数据时,是需要将输入特征和标签配对后传入网络的

生成输入特征/标签对,构建数据集(numpy和tensor都可以使用这条语句传入数据)tf.data.Dataset.from_tensor_slices((输入特征,标签))
features=tf.constant([21,32,423,432])
labels=tf.constant([2,1,1,0])
dataset=tf.data.Dataset.from_tensor_slices((features,labels))
print(dataset)
for element in dataset:
    print(element)

 

8.求出张量的梯度 
求出张量的梯度tf.GradientTape

 with结构记录计算过程,gradient求出张量的梯度

with tf.GradientTape() as tape:

        计算过程

grad=tape.gradient(函数,对谁求导)

在下面额代码中,我们的w的初始值为4.0,然后我们定义我们的损失函数为w的平方。

我们将我们的grad定义为loss对w进行求导操作,也就是w^2对w进行求导,也就是2w

最后我们将4.0带入到2w中,得到我们最终的结果为8.0

with tf.GradientTape() as tape:
    w=tf.Variable(tf.constant(4.0))
    loss=tf.pow(w,2)
grad=tape.gradient(loss,w)
print(grad)

9.枚举函数 
枚举函数enumerate

enumerate 可以用于遍历每一个元素(列表,元组,字符串等),然后将其组合为索引——元素

list=['red','yellow','green','blue','orange','purple']
for i,element in enumerate(list):
    print(i,element)
    

 10.独热编码
独热编码tf.one_hot

在分类问题中我们经常使用独热编码作为我们的标签,

鹅蛋鸭蛋鸡蛋
独热编码010

在上面的表格中,独热编码告诉我们当前标签对应的数据所对应的有0%的可能性为鹅蛋,100%的概率为鸭蛋。0%的概率为鸡蛋

tf.one_hot()函数将待转换数据转换成独热编码进行数据

tf.one_hot(待转换数据,depth=分成几类)

classes=4
labels=tf.constant([2,3,1,2])
output=tf.one_hot(labels,depth=classes)
print(output)

 

 这里,我们传入的数据为[2,3,1,2],转换成我们的独热编码就分别为[0,0,1,0],[0,0,0,1],[0,1,0,0],[0,0,1,0]

11.概率转换函数 
使每个输出值变成0到1之间的概率值tf.nn.softmax

y=tf.constant([1.01,2.01,-0.66])
y_1=tf.nn.softmax(y)
print(y_1)

12.自更新函数 
赋值操作,更新参数的值并返回assign_sub

在调用assign_sub前,先用tf.Variable定义变量w为可训练(可自更新)

w.assign_sub(w要自减的内容)

w=tf.Variable(8)
w.assign_sub(3)
print(w)

 13.最大值索引函数
返回张量沿着指定维度最大值的索引tf.argmax(张量名,axis=操作轴)
import numpy as np
test=np.array([[1,2,3],[2,3,4],[5,6,7],[7,8,9]])
print(test)
print(tf.argmax(test,axis=0))#返回每一列最大值的索引
print(tf.argmax(test,axis=1))#返回每一行最大值的索引

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/882866.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号