TensorFlow cookbook学习笔记

这篇博客详细介绍了TensorFlow的使用,包括数据标准化、数据集划分、超参数设置、模型构建、损失函数、训练过程、调参和部署。此外,还深入探讨了Tensor的创建方法,如固定值、序列、随机分布的Tensor,以及矩阵运算和变量的初始化与使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Chapter1 Getting Started with TensorFlow

TensorFlow设计流程

1 数据标准化:

data=tf.nn.batch_norm_with_global_normalization(...)


2 划分数据集

训练集、验证集、测试集


3 设置超参数:

learning_rate=0.01

batch_size=100

iterations=1000


4 变量和占位符的初始化:

a_var=tf.constant(42) //常量,不可变

x_input=tf.placeholder(tf.float32,[None,input_size]) 

y_input=tf.placeholder(tf.float32,[None,num_classes]) 

//tf.placeholder占位符,tf.float32为数据类型,x值可变,通过feed_dict传入x参数,具体用法如下:

sess=tf.Session()//初始化计算图
x=tf.placeholder(tf.string)
y=tf.placeholder(tf.float16)
...
with tf.Session() as sess:
    output=sess.run(x,feed_dict={x:'hello tf',y:3.14,...})

//在Session run时就会将参数传入占位符


5 定义模型结构:

y_pred=tf.add(tf.mul(x_input,weight_matrix),b_matrix) //tf.add tf.mul为tf基本运算函数


6 损失函数声明

loss=tf.reduce_mean(tf.square(y_actual-y_pred)


7 模型初始化与训练

with tf.Session(graph=graph) as sess:
  ...
  sess.run(...)
  ...
或者

sess=tf.Session(graph=graph)
sess.run(...)


8 评估模型

过拟合或欠拟合的问题

9 调参


10 部署


——————————————————————————————————————————————————


Tensor的声明

固定的tensor创建方法:

用0填充的Tensor:zero_tsr=tf.zeros([row_dim,col_dim],type=int/float)

用1填充的Tensor:ones_tsr=tf.ones([row_dim.col_dim],type=int/float)

用任意常量填充的Tensor:filled_tsr=tf.fill(row_dim,col_dim],any_constant)

用现有常量中填充的Tensor:constant_tsr=tf.constant([1,2,3],shape=[1,3])

//tf.constant()这一函数能够用来将值广播式地传入数组中,tf.constant(42,[row_dim,col_dim]与tf.fill()效果一样


相似tensor的创建方法:

zeros_similar=tf.zeros_like(constant_tsr)

ones_similar=tf.ones_like(constant_tsr)

//因为这些tensor是以之前的tensor的shape和type建立的,所以需要按顺序初始化,同时初始化会报错


序列tensor的创建方法:

linear_tsr=tf.linespace(start=0,stop=1,num=3) ==> [0,0.5,1]//含1

integer_seq_tsr=tf.range(start=6,limit=15,delta=3) ==>[6,9,12]//不含15


随机tensor的创建方法:

randunif_tsr=tf.random_uniform([row_dim,col_dim],minval=0,maxval=1)//一致分布,在[0,1)范围内随机

randnorm_tsr=tf.random_normal([row_dim,col_dim],mean=0.0,stddev=1.0)//正态分布随机数

runcnorm_tsr=tf.truncated_normal([row_dim,col_dim],mean=0.0,stddev=1.0)//在指定平均值的两个标准偏差范围内对正态分布截断随机

shuffled_output=tf.random_shuffle(input_tensor)//沿着输入的tensor的第一维随机排列(以行为单位进行随机排序)

cropped_output=tf.random_crop(input_tensor,crop_size)//对输入的tensor进行随机切割


在函数中封装tensor创建变量:

my_var=tf.Variable(tf.zeros([row_dim,col_dim}))


占位符和变量的使用

通过Variable()函数创建变量并初始化:

my_var=tf.Variable(tf.zeros([2,3]))
sess=tf.Session()
initialize_op=tf.global_variables_initializer()
sess.run(initialize_op)

0 Tensor的变量初始化图示:



TensorFlow的变量初始化方法:

全局初始化

initiallizer_op=tf.global_variables_initializer()

有顺序控制的初始化

sess=tf.Session()
first_var=tf.Variable(tf.zeros([2,3)])
sess.run(first_var.initializer)
second_var=tf.Variable(tf.zeros_like(first_var))
sess.run(second_var.initializer)

矩阵的使用

矩阵的创建:

A=tf.diag([1.0,1.0,1.0])//3*3的对角矩阵

B=tf.truncated_nomal([2,3])//2*3的处于指定平均值的两个标准偏差范围内对正态分布截断随机

C=tf.random_uniform([2,3])//2*3的正态分布随机数的矩阵,每次运行结果会变化

D=tf.convert_to_tensor(np.array([[1.,2.,3.],[-3.,-7.,-1.],[0.,5.,-2.]]))//3*3指定值的矩阵

E=tf.fill([2,3],5.0)//以5.0填充的2*3的矩阵


矩阵运算:

sess.run(A+B)//矩阵加

sess.run(A-B)//矩阵减

sess.run(tf.matmul(B,A))//矩阵乘

//matmul()函数可以通过参数指定矩阵是否转置或是否是稀疏矩阵等

sess.run(tf.transpose(A))//转置

sess.run(tf.matrix_determinant(A))//计算矩阵的值

sess.run(tf.matrix_inverse(A)//计算矩阵的逆

//如果矩阵是正定矩阵,求逆的方法是基于乔里斯基分解,否则LU分解

sess.run(tf.cholesky(identity_matrix))//乔里斯基分解

sess.run(tf.self_adjoint_eig(A))//生成特征值和特征向量,格式为第一行是特征值,剩余部分是特征向量


操作声明

sess.run(tf.div(3,4)//返回值为int型

sess.run(tf.truediv(3,4)//返回值为float型


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值