TensorFlow读书笔记

 1 import tensorflow as tf 
 2 
 3 #设置参数w的随机初始值为5,设定为可训练(即vaiable形式?)
 4 w = tf.Variable(tf.constant(5, dtype=tf.float32))
 5 #学习率
 6 lr=0.2
 7 #循环次数
 8 epoch=40 
 9 
10 for epoch in range(epoch):
11     with tf.GradientTape() as tape:#with结构到grad框起到了梯度计算的过程
12         loss=tf.square(w+1) #损失函数定义为w+1的平方
13     grads=tape.gradient(loss,w)#gradinet函数告知对谁求导
14     
15     w.assign_sub(lr*grads) #assign_sub做自减,即w-=
16     print("After %s epoch,w is %f,loss is %f" % (epoch, w.numpy(), loss))

输出:

 

 张量生成

  tensorflow中的tensor就是张量,是多维数组(多维列表),用阶来表示张量的维数,判断张量是几阶的可以看有几个方括号。

  数据类型  :  tf.int tf.float  ,    tf.bool   ,   tf.string

图和创建一个张量tensor

import tensorflow as tf
a=tf.constant([1,5],dtype=tf.int64)
#直接打印a,会输出a的所有信息
print(a)

#打印a的数据类型
print(a.dtype) 

#打印a的形状
print(a.shape)

很多时候数据是用numpy给出的,可以通tf.convert_to_tensor(数据名,dtype=数据类型(可选))将其转化为tensor数据类型

import tensorflow as tf 
import numpy as np
a=np.arange(0,5)
b=tf.convert_to_tensor(a,dtype=tf.int64)
print(a) 
print(b)

 

 

 其他张量创建方法

#创建全为0的张量
tf.zeros(维度)

#创建全为1的张量
tf.ones(维度)

#创建全为指定值的张量
tf.fill(维度,指定值)

生成随机数

    生产正态分布的随机数,默认均值为0,标准差为1:tf.random.normal(维度,mean=均值,stddev=标准差)

    生成截断式正态分布的随机数:tf.random.truncated_normal(维度,mean=均值,stddev=标准差)

 生成均匀分布随机数[minval,maxval),注意是前闭后开:tf.random.uniform(维度,minval=最小值,maxval=最大值)

d=tf.random.normal([2,2],mean=0.5,stddev=1)
print(d)
e=tf.random.truncated_normal([2,2],mean=0.5,stddev=1)
print(e)
f=tf.random.uniform([2,2],minval=0,maxval=1)
print(f)

 

 常用函数

  强制tensor转换为该数据类型:tf.cast(张量名,dtype=数据类型 )

  计算张量维度上元素的最小值:tf.reduce_min(张量名)

  计算张量维度上的元素最大值:tf.reduce_max(张量名)

x1=tf.constant([1.,2.,3.],dtype=tf.float64)
print(x1)
x2=tf.cast(x1,tf.int32)
print(tf.reduce_min(x2),'\n',tf.reduce_max(x2))

 

  计算张量沿着指定方向的平均值:tf.reduce_mean(张量名,axis=操作轴)

  计算张量沿着指定维度的和:tf.reduce_sum(张量名,axis=操作轴)

posted @ 2022-04-24 22:31  怜雨慕  阅读(41)  评论(0编辑  收藏  举报