创建一个张量tensor(张量是常量)
tf.constant(内容,dtype=数据类型)
数据类型的使用也是以tf开头,一般来说使用tensorflow的所有函数和数据结构都需要有tf
a = tf.constant([1,5],dtype=tf.int64)
print(a)
print(a.shape)
print(a.dtype)
类型转换
tf.cast(张量名,dtype=数据类型)
tf.reduce_min(张量名)#计算张量中元素的最大值
tf.reduce_max(张量名) #计算张量中元素的最小值
tf.reduce_mean() #求均值
tf.reduce_sum() #求和
axis=0是行,axis=1是列
axis调整函数执行的维度,不指定axis则全部元素参与运算
axis可以指定操作的方向,一般作为函数的参数
将numpy格式的数据类型转换为tensorflow的数据类型
tf.convert_to_tensor(np数组,dtype=数据类型)
import numpy as np
a = np.arange(0,5)
b = tf.convert_to_tensor(a,dtype=tf.int64)
使用tf创建数组
a = tf.zeros([2,3])# 创建一个2行3类的二维张量
b = tf.fill([2,2],100)
c = tf.random.uniform([2,2],0,1)# 利用random里的各种函数实现各种随机变量矩阵的生成
创建变量
tf.Variable()# 将变量标记为可训练的,被标记的变量会在反向传播中记录梯度信息,在神经网络中,常用该函数标记待训练的参数
w = tf.Variable(tf.random.normal([2,2],mean=0,stddev=1))
基本运算
# tf.add(a,b) tf.subtract(a,b) tf.multiply(a,b) tf.divide(a,b) tf.square tf.pow tf.sqrt tf.matmul
# + - * / 平方 次方 开方 矩阵乘
注意[[1,1,1]]是个二维的张量
将数据集的标签和特征进行配对
tf.data.Dataset.from_tensor_slices(feature,label)#将数据集的标签和特征进行配对
函数求导
with tf.GradientTape() as tape:
************
grad = tape.gradient(函数,对谁求导)
with结构记录计算过程:
基本思想是:with所求值的对象必须有一个构建方法,一个析构方法。
紧跟with**后面的语句被求值后,返回对象的构建方法被调用,这个方法的返回值将被赋值给as后面的变量。当with后面的代码块全部被执行完之后,将调用前面返回对象的析构方法。
with tf.GradientTape() as tape:
w = tf.Variable(tf.constant(3.0,dtype=tf.int64))
loss = tf.pow(w,2)
grad = tape.gradient(loss,w)
print(grad)
枚举
for i,element in enumerate(s):
print(i,element)
独热编码,在分类问题中,常用来做标签
tf.one_hot(带转换数据,depth=分几类)
classes = 3
labels = tf.constant([1,0,2])
output = tf.one_hot(labels,depth = classes)
print(output)
softmax,使得输出满足相加是1 的概率分布
tf.nn.softmax(x)
assign_sub 赋值操作,更新参数的值并返回
w.assign_sub(1)
返回张量指定维度最大值的索引
tf.argmax(张量名,axis = ***)