一小时学会TensorFlow2之基本操作1实例代码
作者:我是小白呀 发布时间:2023-03-01 23:58:10
概述
TensorFlow2 的基本操作和 Numpy 的操作很像. 今天带大家来看一看 TensorFlow 的基本数据操作.
创建数据
详细讲解一下 TensorFlow 创建数据的集中方法.
创建常量
tf.constant() 格式为:
tf.constant(value,dtype,shape,name)
参数:
value: 常量值
dtype: 数据类型
shape: 表示生成常量数的维度
name: 数据名称
例子:
# 创建常量1
c1 = tf.constant(1)
print(c1)
# 创建常量, 类型为bool
c2 = tf.constant([True, False])
print(c2)
# 创建常量1, 类型为float32, 大小为3*3
c3 = tf.constant(0.1, shape=[2, 2])
print(c3)
# 创建常量, 类型为string字符串
c4 = tf.constant("Hello World!")
print(c4)
输出结果:
tf.Tensor(1, shape=(), dtype=int32)
tf.Tensor([ True False], shape=(2,), dtype=bool)
tf.Tensor(
[[0.1 0.1]
[0.1 0.1]], shape=(2, 2), dtype=float32)
tf.Tensor(b'Hello World!', shape=(), dtype=string)
创建数据序列
格式:
range(start, limit, delta=1, dtype=None, name='range')
参数:
start: 开始位置
limit: 序列的上限
delta: 相当于 Numpy 的 step, 步长
detype: 数据类型
name: 数据名称, 默认为 “range”
例子:
# 创建数字序列
r1 = tf.range(4)
print(r1)
输出结果:
tf.Tensor([0 1 2 3], shape=(4,), dtype=int32)
创建图变量
格式:
tf.Variable.init(initial_value, trainable=True, collections=None, validate_shape=True, name=None)
参数:
参数名称 | 参数类型 | 参数含义 |
initial_value | 所有可以转换为 Tensor 的类型 | 变量的初始值 |
trainable | bool | 如果为 True, 会把它加入到 GraphKeys.TRAINABLE_VARIABLES, 才能对它使用 Optimizer |
collections | list | 指定该图变量的类型, 默认为 [GraphKeys.GLOBAL_VARIABLES] |
validate_shape | bool | 如果为 False, 则不进行类型和维度检查 |
name | string | 数据名称 |
例子:
# 创建图变量
v1 = tf.Variable(tf.range(6))
print(v1)
print(isinstance(v1, tf.Tensor)) # False
print(isinstance(v1, tf.Variable)) # True
print(tf.is_tensor(v1)) # True
输出结果:
False
True
True
tf.zeros
tf.zeros 可以帮助我们创建一个所有参数为 0 的 tensor 对象. 类似于 np.zeros.
格式:
tf.zeros(shape, dtype=tf.dtypes.float32, name=None)
参数:
shape: 数组的形状
dype: 数据类型, 默认为float32
name: 数据名称
例子:
# 创建参数为0的tensor
z1 = tf.zeros([1])
print(z1)
z2 = tf.zeros([3, 3])
print(z2)
输出结果:
tf.Tensor([0.], shape=(1,), dtype=float32)
tf.Tensor(
[[0. 0. 0.]
[0. 0. 0.]
[0. 0. 0.]], shape=(3, 3), dtype=float32)
tf.ones
tf.ones 用法和 tf.zeros 一样, 可以帮助我们创建一个所有参数为 1 的 tensor 对象.
tf.ones(shape, dtype=tf.dtypes.float32, name=None)
参数:
shape: 数组的形状
dype: 数据类型, 默认为 float32
name: 数据名称
例子:
# 创建参数为1的tensor
o1 = tf.ones([1])
print(o1)
o2 = tf.ones([3, 3])
print(o2)
输出结果:
tf.Tensor([1.], shape=(1,), dtype=float32)
tf.Tensor(
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]], shape=(3, 3), dtype=float32)
tf.zeros_like
tf.zeros_like 可以帮我们创建一个与给定 tensor 类型大小一致的 tensor. 类似 np.zeros_like.
格式:
tf.zeros_like(tensor, dype=None, name=None)
参数:
tensor: 传入的 tensor
dype: 数据类型, 默认为 float32
name: 数据名称
例子:
# tf.zeros_like
t1 = tf.range(6)
z1 = tf.zeros_like(t1)
print(z1)
输出结果:
tf.Tensor([0 0 0 0 0 0], shape=(6,), dtype=int32)
tf.ones_like
格式:
tf.ones_like(tensor, dype=None, name=None)
参数:
tensor: 传入的 tensor
dype: 数据类型, 默认为 float32
name: 数据名称
例子:
# tf.ones_like
t1 = tf.range(6)
o1 = tf.ones_like(t1)
print(o1)
输出结果:
tf.Tensor([1 1 1 1 1 1], shape=(6,), dtype=int32)
tf.fill
tf.fill 可以帮助我们创建一个指定形状和内容的 tensor.
格式:
tf.fill(shape, value, name=None)
参数:
shape: 数组的形状
value: 填充的值
name: 数据名称
例子:
# tf.fill
f1 = tf.fill([2, 2], 0)
print(f1)
f2 = tf.fill([3, 3], 6)
print(f2)
输出结果:
[[0 0]
[0 0]], shape=(2, 2), dtype=int32)
tf.Tensor(
[[6 6 6]
[6 6 6]
[6 6 6]], shape=(3, 3), dtype=int32)
tf.gather
tf.gather: 根据索引从参数轴收集切片.
格式:
tf.gather(
params, indices, validate_indices=None, axis=None, batch_dims=0, name=None
)
参数:
params: 传入的张量
indices: A Tensor. types 必须是: int32, int64. 里面的每一个元素大小必须在 [0, params.shape[axis]) 范围内
axis: 维度, 默认为 0
例子:
input =[ [[[1, 1, 1], [2, 2, 2]],
[[3, 3, 3], [4, 4, 4]],
[[5, 5, 5], [6, 6, 6]]],
[[[7, 7, 7], [8, 8, 8]],
[[9, 9, 9], [10, 10, 10]],
[[11, 11, 11], [12, 12, 12]]],
[[[13, 13, 13], [14, 14, 14]],
[[15, 15, 15], [16, 16, 16]],
[[17, 17, 17], [18, 18, 18]]]
]
output=tf.gather(input, [0,2],axis=0)
输出结果:
tf.Tensor(
[[[[ 1 1 1]
[ 2 2 2]][[ 3 3 3]
[ 4 4 4]][[ 5 5 5]
[ 6 6 6]]]
[[[13 13 13]
[14 14 14]][[15 15 15]
[16 16 16]][[17 17 17]
[18 18 18]]]], shape=(2, 3, 2, 3), dtype=int32)
tf.random
正态分布
tf.random.normal 可以帮我们创建随机数服从正态分布.
格式:
tf.random.normal(
shape, mean=0.0, stddev=1.0, dtype=tf.dtypes.float32, seed=None, name=None
)
参数:
shape: 张量的形状
mean: 正态分布的均值, 默认为 0.0
stddev: 正态分布的标准差, 默认为 1.0
dtype: 数据类型, 默认为 float32
seed: 随机数种子
name: 数据名称
例子:
# tf.normal
n1 = tf.random.normal([2, 2], mean = 1, stddev=1, seed=0)
print(n1)
输出结果:
tf.Tensor(
[[0.60084236 3.1044393 ]
[1.1710722 1.5465181 ]], shape=(2, 2), dtype=float32)
均匀分布
tf.random.uniform 可以帮我们创建随机数服从均匀分布.
格式:
tf.random.uniform(
shape, minval=0, maxval=None, dtype=tf.dtypes.float32, seed=None, name=None
)
参数:
shape: 张量的形状
minval: 均匀分布的最小值, 默认为 0
maxvak: 均匀分布的最大值
dtype: 数据类型, 默认为 float32
seed: 随机数种子
name: 数据名称
例子:
# tf.uniform
u1 = tf.random.uniform([2, 2], minval=0, maxval=1)
print(u1)
输出结果:
tf.Tensor(
[[0.7382153 0.6622821 ]
[0.22840345 0.09706533]], shape=(2, 2), dtype=float32)
打乱顺序
tf.random.shuffle 可以帮助我们打乱张量的顺序.
格式:
tf.random.shuffle(
value, seed=None, name=None
)
参数:
value: 要被打乱的张量
seed: 随机数种子
name: 数据名称
例子:
# tf.shuffle
s1 = tf.random.shuffle(tf.range(10))
print(s1)
输出结果:
tf.Tensor([1 7 3 9 2 6 8 5 4 0], shape=(10,), dtype=int32)
获取数据信息
获取数据维度
tf.rank 的用法和 np.ndim 基本一样.
格式:
rank(input, name=None) # 类似np.ndim
参数:
input: 传入的张量
name: 数据名称
例子:
# 获取张量维度
t = tf.constant([[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]])
print(tf.rank(t))
输出结果:
tf.Tensor(3, shape=(), dtype=int32)
数据是否为张量
格式:
tf.is_tensor(input)
参数:
input: 传入的张量
例子:
# 判断是否为张量
a = tf.constant([1, 2, 3])
b = tf.constant([True, False, False])
c = tf.constant("Hello World")
d = np.arange(6)
print(a)
print(tf.is_tensor(a))
print(b)
print(tf.is_tensor(b))
print(c)
print(tf.is_tensor(c))
print(d)
print(tf.is_tensor(d))
输出结果:
tf.Tensor([1 2 3], shape=(3,), dtype=int32)
True
tf.Tensor([ True False False], shape=(3,), dtype=bool)
True
tf.Tensor(b'Hello World', shape=(), dtype=string)
True
[0 1 2 3 4 5]
False
数据转换
转换成张量
格式:
tf.convert_to_tensor(value, dtype=None, dtype_hint=None, name=None)
参数:
value: 需要转换的值
dtype: 数据类型
dtype_hint: 当 dtype 为 None 时的备选方案
name: 数据名称
例子:
# 转换成张量
array = np.arange(6)
print(array.dtype)
array_tf = tf.convert_to_tensor(array)
print(array_tf)
输出结果:
int32
tf.Tensor([0 1 2 3 4 5], shape=(6,), dtype=int32)
转换数据类型
格式:
cast(x, dtype, name=None)
参数:
x: 输入的值
dtype: 数据类型
name: 数据名称
例子:
# 装换数据类型
array_tf = tf.constant(np.arange(6))
print(array_tf)
array_tf = tf.cast(array_tf, dtype=tf.float32)
print(array_tf)
tf_bool = tf.cast(tf.constant([False, True]), dtype=tf.int32)
print(tf_bool)
输出结果:
tf.Tensor([0 1 2 3 4 5], shape=(6,), dtype=int32)
tf.Tensor([0. 1. 2. 3. 4. 5.], shape=(6,), dtype=float32)
tf.Tensor([0 1], shape=(2,), dtype=int32)
转换成 numpy
例子:
# tensor转换成numpy
array_tf = tf.ones([2,2])
array_np = array_tf.numpy()
print(array_np)
输出结果:
[[1. 1.]
[1. 1.]]
来源:https://blog.csdn.net/weixin_46274168/article/details/117591977
猜你喜欢
- 缓存是基于Application实现的CacheState类,建议实例化时用名Cache程序代码<% Class Cache
- 本文实例讲述了php购物车实现方法。分享给大家供大家参考。具体分析如下:这里我们为你提供个简单的php购物车代码,从增加购物产品与发生购买了
- 1 文件'''文件存储文件主名.扩展名'''Python中常有的数据文件类型有文本文件、二进
- 前言subprocess库提供了一个API创建子进程并与之通信。这对于运行生产或消费文本的程序尤其有好处,因为这个API支持通过新进行的标准
- <%Class Cls_TemplateDim RegDim PageDim CIDDim SIDDim RuleDim Conten
- 如下所示:l = [1, 2, 3, 5]l_one = [2, 8, 6, 10]print set(l) & set(l_one
- 该代码用的是paramiko模块,python版本是python2.7下面上源码# -*- coding: utf-8 -*-import
- 浏览带有下拉菜单的网页时,我们经常会注意到当更改显示器分辨率时,其下拉菜单的位置并没有改变,这也是我们设计网页时容易忽略的一个问题,其实通过
- 前言本文主要给大家介绍了关于Django快速分页的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。分页在web开发
- 前言在 Qt 中可以使用信号和槽机制很方便地实现部件之间的通信,考虑下面这样的场景:我想要点击任意一个专辑卡并通知主界面跳转到专辑界面,那么
- CONVERT将某种数据类型的表达式显式转换为另一种数据类型。由于某些需求经常用到取日期格式的不同.现以下可在SQL Server中将日期格
- 1.设置phpMyAdmin Language:Chinese simplified (zh-utf-8)MySQL 字符集:UTF-8 U
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- python中with可以明显改进代码友好度,比如:with open('a.txt') as f:  
- PHP用代码实现文件下载,阅读PHP用代码实现文件下载,我们一般实现下载都是调用url来下载,但是遇到ie能识别打开的文件就不能用这种方式了
- PHP 备份 mysql 数据库的源代码,在完善的 PHP+Mysql 项目中,在后台都会有备份 Mysql 数据库的功能,有了这个功能,对
- 主要记录一下:图片验证码1.获取登录界面的图片2.获取验证码位置3.在登录页面截取验证码保存4.调用百度api识别(目前准确率较高的识别图片
- 本文实例讲述了php实现的简单检验登陆类。分享给大家供大家参考。具体如下:<?phpclass checklogin{ v
- 1、PHP中的抽象类PHP 5 支持抽象类和抽象方法。定义为抽象的类不能被实例化。任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么
- 关于 TensorFlowTensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(N