tensorflow学习笔记(一)

安装

此处使用conda进行安装

//安装英伟达的SDK10.1版本
conda install cudatoolkit=10.1
//安装英伟达深度学习软件包
conda install cudnn=7.6
//安装tensor
conda install tensorflow=2.1

//说明,版本号如果不是一样的可以删除,前面两个安装如果不成功
就是不支持GPU。  

tensor中的数据类型

数据类型

张量

张量简单来说就是多维数组。零阶张量就是一个常数,一阶张量就是一维数组,二阶张量就是二维数组…以此类推;

张量的生成

# 
tf.constant(张量内容,dtype=数据类型)

# 实例
import tensorflow as tf
a = tf.constant([1,2,3].dtype = tf.int32)
print(a)
print(a.dtype)
print(a.shape)
# 从numpy类型创建张量
tf.convert_to_tensor(numpy的数据类型, dtype=数据类型)

# 实例
import tensorflow as tf
num = np.array([1, 2, 4, 5])
num2 = tf.convert_to_tensor(num, dtype=tf.int64)
print(num2)
# 创建指定维度的全为0的张量,一维用常数即可,多维维度用一维数组的形式及进行表示
tf.zeros(维度)
# 创建指定维度的全为1的张量,一维用常数即可,多维维度用一维数组的形式及进行表示
tf.ones(维度)
# 创建指定维度的全为指定值的张量,一维用常数即可,多维维度用一维数组的形式及进行表示
tf.fill(维度,指定值)

# 实例
import tensorflow as tf
zero_tensor = tf.zeros([1, 2])
one_tensor = tf.ones(1)
same_tensor = tf.fill([2, 3], 3)
print(zero_tensor)
print(one_tensor)
print(same_tensor)

更多关于张量的操作看tensorFlow中的tensor类。可能后面会更一篇写这个类,暂时先不写了。

生成随机数

# 生成正态分布的随机数
tf.random.normal(维度,mean=均值,stddev=标准差)

# 实例
random = tf.random.normal([2, 3], mean=0, stddev=1)
print(random)
# 生成截断式正态分布的随机数。即如果生成的随机数的取值在(μ-2σ,μ+2σ)之外则重新进行生成
tf.random.truncated_normal(维度, mean=平均值, stddev=标准差)

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

# 实例
random2 = tf.random.uniform([1, 2], minval=2, maxval=4)
print(random2)

更多生成随机数的函数见tf.random这个类,后面可能会写

常用的tf函数

# 强制数据类型转换
tf.cast(张量名,dtype=数据类型)

# 实例
num1 = tf.constant([1, 2, 3], dtype=tf.int16)
num2 = tf.cast(num1,dtype=tf.float16)
print(num1)
print(num2)
# 计算张量中的最小值,不指定操作轴,则对整个张量进行计算
tf.reduce_min(张量名,axis=操作轴)
# 计算张量中的最大值,不指定操作轴,则对整个张量进行计算
tf.reduce_max(张量名)
# 计算张量的平均值,不指定操作轴,则对整个张量进行计算
tf.reduce_mean(张量名)
# 计算张量的和,不指定操作轴,则对整个张量进行计算
tf.reduce_sum(张量名)


# 实例
random3 = tf.random.normal([2,3],mean=0,stddev=1)
print(random3)
print(tf.reduce_min(random3),tf.reduce_max(random3),
	tf.reduce_mean(random3),tf.reduce_sum(random3))
# 将变量标记为可训练的,即被标记的变量会在反向传播中记录梯度信息。在神经网络训练中,常用该函数标记待训练的参数
tf.Variable(初始值)

# 实例,初始化神经网络中的权重
w=tf.Variable(tf.random.normal([2,3],mean=0,stddev=1))
# 返回张量沿指定轴最大值的索引
tf.argmax(张量名,axis=操作轴)

tensor中数学运算

  1. tf.add(张量1,张量2):加法
  2. tf.subtract(张量1,张量2):减法
  3. tf.multiply(张量1,张量2):乘法
  4. tf.divide(张量1,张量2):除法
    注:只有维度相同的张量才能进行四则运算
  5. tf.square(张量名):平方
  6. tf.pow(张量名,n次方):次方
  7. tf.sqrt(张量名):开方
  8. tf.matmul(张量1,张量2):矩阵乘

更多的函数见tf.tensor。

数据组合

# 将多个分片一一组合在一起
tf.data.Dataset.from_tensor_slices((分片1,分片2,...))

导数

# with结构记录计算过程,gradient求出张量的梯度
with tf.tf.GradientTape() as tape:
    若干计算过程
grad = tape.gradient(函数,指定的求导参数)


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

枚举

# 遍历每个元素(如列表、元组或字符串),组合为:索引 元素
enumerate

# 实例
seq = ['one','two','three']
for i,element in enumerate(seq):
	print(i,element)

生成one_hot

tf.ont_hot(待转换数据,depth=分类的个数)

# 实例
class_num = 3
labels = tf.constant([2, 1, 0])
transed = tf.one_hot(labels, depth=class_num)
print(transed)

生成概率分布

tf.nn.softmax(张量)

参数的自更新

# 更新的自减操作。更新参数的值并返回。注意:在调用函数之前,变量必须为可训练的
调用的变量.assign_sub(幅度)

# 实例
ori = tf.Variable(3)
ori.assign_sub(1)
print(ori)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值