tensorflow笔记

tensorflow2.0:

建议直接使用2.0版本,与之前1.x版本有着截然不同的风格,安装时推荐anaconda+pycharm,anaconda最大的好处是能分隔不同的虚拟环境,在pycharm中ctrl+shift+s可以调配环境。
一个端到端的开源机器学习平台
兼顾易用性和执行效率:
在程序调试阶段用动态图,快速建立模型、调试程序
在部署阶段,采用静态图机制,提高模型的性能和部署能力

创建张量:

张量由Tensor类实现,为Tensor对象
a = tf.constant(value, dtype, shape) 创建张量
dtype=tf.float32(浮点的32位要快很多)
value: 数字,numpy,list, bool ,字符串
a.numpy()转为numpy的函数
tf.cast(a,dtype=tf.float32) 改变张量数据类型
bool -> 数 1和0
数 -> bool 非0的都是True
tf.convert_to_tensor() 转为张量
tf.is_tensor()
tf.reshape(tensor,shape) -1为自动推导
isinstance(…, tf.Tensor/np.ndarray)
特殊张量:
tf.zeros(shape, dtype) 全0
tf.ones() 全1
tf.fill(dims, value) 元素全相等
tf.random.normal(shape, mean缺省0, stddev缺省1, dtype) 正态分布的随机数张量
tf.random.truncated_normal(……) 截断正态分布, 2倍标准差截断
tf.random.set_seed(8) 随机种子,对于种子相等的,则结果一样
tf.random.uniform(shape, minval前闭后开 , maxval,dtype) 均匀分布
tf.random.shuffle(张量或列表、……) 打乱第一维的张量
tf.range()

张量运算:

加减乘除:
	tf.add(x,y)	加
	tf.substract(x,y)	减
	tf.multiply(x,y)	乘
	tf.devide(x,y)	除
	tf.math.mod(x,y)	取模
	逐元素运算,并要求数据类型一致
幂指对数:
	tf.pow(x,y)	幂次方,y可以使数字、张量
	tf.square(x)	平方
	tf.sqrt(x)	平方根
	tf.exp(x)	e的……次方
	tf.math.log(x)	ln,以e为底,换底公式
其他:
	sign(x)	符号
	abs(x)	绝对值
	negative(x)	相反数
	reciprocal(x)	倒数
	ceil(x)	向上取整
	floor(x)	向下取整
	rint(x)	最接近的整数
	round(x)	逐元素最接近的整数
	maximum(x,y)	返回两tensor中的较大值
	minimum(x,y)	较小值
	cos(x),sin(x),tan(x)	
	acos(x)……
广播机制:
	要求最后一个维度长度相等
矩阵:
	tf.matmul(a,b)
	或 a@b
	取最后两维
统计数据:
	reduce_num(tensor, axis)
	reduce_mean(tensor, axis)最好转化为浮点数类型
	reduce_max(tensor, axis)
	reduce_min(tensor, axis)
	如果不指定axis,则为全局统计值
	求最值索引:
		tf.argmax()
		tf.argmax()
		如果不指定axis,则默认为0

维度变换:

增加维度:
	tf.expend_dims(input, axis)   增加维度为1
减少维度:(只能删除为1的维度)
	tf.squeeze(input, axis) 减少维度,若不指定,则将为1的维度都删了
增加和删除维度,只能长度为1操作,只是改变了张量的视图,不改变张量的存储顺序
交换维度:
	tf.transpose(a, perm)  二维数组则转置
改变了张量存储顺序
拼接张量:
	tf.concat([tensors], axis在哪个轴上)
分割张量:
	tf.split(value, num_or_size_splits(数或列表), axis=0)
拼接和分割,只能长度为1操作,只是改变了张量的视图,不改变张量的存储顺序
堆叠张量:
	tf.stack(values, axis)  
分解张量:
	tf.stack(……)

可训练变量和自动求导:

tf.Variable(v,dtype)
改变值:v.assign()

在这里插入图片描述
在这里插入图片描述

两个参数都是布尔值,前者默认为False,为True时代表可以多次使用,但是最后要del tape
后者默认为True,为False需要手动添加监视  tape.watch(x) 这样x可以不是Variable
求二阶导数:

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值