建站平台那个好,营销型网站平台建设,网站建设报价表,网站服务器速度慢文章目录一些概念、函数、用法TensorFlow实现一元线性回归TensorFlow实现多元线性回归一些概念、函数、用法
对象Variable 创建对象Variable#xff1a;
tf.Variable(initial_value,dtype)利用这个方法#xff0c;默认整数为int32#xff0c;浮点数为float32#xff0c;…
文章目录一些概念、函数、用法TensorFlow实现一元线性回归TensorFlow实现多元线性回归一些概念、函数、用法
对象Variable 创建对象Variable
tf.Variable(initial_value,dtype)利用这个方法默认整数为int32浮点数为float32注意Numpy默认的浮点数类型是float64如果想和Numpy数据进行对比则需要修改与numpy一致否则在机器学习中float32位够用了。 将张量封装为可训练变量
print(tf.Variable(tf.random. normal([2,2])))tf.Variable ‘Variable:0’ shape(2, 2) dtypefloat32, numpyarray([[-1.2848959 , -0.22805293],[-0.79079854, 0.7035335 ]], dtypefloat32) trainalbe属性 用来检查Variable变量是否可训练
x.trainalbe可训练变量赋值注意x是Variable对象类型不是tensor类型
x.assign()
x.assign_add()
x.assign_sub()用isinstance()方法来判断是tensor还是Variable 自动求导 with GradientTape() as tape: 函数表达式 gradtape.gradient(函数自变量) xtf.Variable(3.)
with tf.GradientTape() as tape:ytf.square(x)
dy_dx tape.gradient(y,x)
print(y)
print(dy_dx)tf.Tensor(9.0, shape(), dtypefloat32) tf.Tensor(6.0, shape(), dtypefloat32) GradientTape函数 GradientTape(persistentwatch_accessed_variables) 第一个参数默认为false表示梯度带只使用一次使用完就销毁了若为true则表明梯度带可以多次使用但在循环最后要记得把它销毁 第二个参数默认为true表示自动添加监视 tape.watch()函数 用来添加监视非可训练变量 多元函数求一阶偏导数
xtf.Variable(3.)
ytf.Variable(4.)
with tf.GradientTape(persistentTrue) as tape:ftf.square(x)2*tf.square(y)1
df_dx,df_dy tape.gradient(f,[x,y])
first_grade tape.gradient(f,[x,y])
print(f)
print(df_dx)
print(df_dy)
print(first_grade)
del tapetf.Tensor(42.0, shape(), dtypefloat32) tf.Tensor(6.0, shape(), dtypefloat32) tf.Tensor(16.0, shape(), dtypefloat32) [tf.Tensor: id36, shape(), dtypefloat32, numpy6.0, tf.Tensor: id41, shape(), dtypefloat32, numpy16.0] 多元函数求二阶偏导数
xtf.Variable(3.)
ytf.Variable(4.)
with tf.GradientTape(persistentTrue) as tape2:with tf.GradientTape(persistentTrue) as tape1:ftf.square(x)2*tf.square(y)1first_grade tape1.gradient(f,[x,y])
second_grade [tape2.gradient(first_grade,[x,y])]
print(f)
print(first_grade)
print(second_grade)
del tape1
del tape2tf.Tensor(42.0, shape(), dtypefloat32) [tf.Tensor: id27, shape(), dtypefloat32, numpy6.0, tf.Tensor: id32, shape(), dtypefloat32, numpy16.0] [[tf.Tensor: id39, shape(), dtypefloat32, numpy2.0, tf.Tensor: id41, shape(), dtypefloat32, numpy4.0]] TensorFlow实现一元线性回归
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
#设置字体
plt.rcParams[font.sans-serif] [SimHei]
#加载样本数据
xnp.array([137.97,104.50,100.00,124.32,79.20,99.00,124.00,114.00,106.69,138.05,53.75,46.91,68.00,63.02,81.26,86.21])
ynp.array([145.00,110.00,93.00,116.00,65.32,104.00,118.00,91.00,62.00,133.00,51.00,45.00,78.50,69.65,75.69,95.30])
#设置超参数,学习率
learn_rate0.0001
#迭代次数
iter100
#每10次迭代显示一下效果
display_step10
#设置模型参数初值
np.random.seed(612)
wtf.Variable(np.random.randn())
btf.Variable(np.random.randn())
#训练模型
#存放每次迭代的损失值
mse[]
for i in range(0,iter1):with tf.GradientTape() as tape:predw*xbLoss0.5*tf.reduce_mean(tf.square(y-pred))mse.append(Loss)#更新参数dL_dw,dL_db tape.gradient(Loss,[w,b])w.assign_sub(learn_rate*dL_dw)b.assign_sub(learn_rate*dL_db)#plt.plot(x,pred)if i%display_step0:print(i:%i,Loss:%f,w:%f,b:%f%(i,mse[i],w.numpy(),b.numpy()))TensorFlow实现多元线性回归
import numpy as np
import tensorflow as tf #【1】加载样本数据
areanp.array([137.97,104.50,100.00,124.32,79.20,99.00,124.00,114.00,106.69,138.05,53.75,46.91,68.00,63.02,81.26,86.21])
roomnp.array([3,2,2,3,1,2,3,2,2,3,1,1,1,1,2,2])
pricenp.array([145.00,110.00,93.00,116.00,65.32,104.00,118.00,91.00,62.00,133.00,51.00,45.00,78.50,69.65,75.69,95.30])
numlen(area) #样本数量
#【2】数据处理
x0np.ones(num)
#归一化处理这里使用线性归一化
x1(area-area.min())/(area.max()-area.min())
x2(room-room.min())/(room.max()-room.min())
#堆叠属性数组构造属性矩阵
#从(16,)到(16,3),因为新出现的轴是第二个轴所以axis为1
Xnp.stack((x0,x1,x2),axis1)
print(X)
#得到形状为一列的数组
Yprice.reshape(-1,1)
print(Y)
#【3】设置超参数
learn_rate0.001
#迭代次数
iter500
#每10次迭代显示一下效果
display_step50
#【4】设置模型参数初始值
np.random.seed(612)
Wtf.Variable(np.random.randn(3,1))
#【4】训练模型
mse[]
for i in range(0,iter1):with tf.GradientTape() as tape:PREDtf.matmul(X,W)Loss0.5*tf.reduce_mean(tf.square(Y-PRED))mse.append(Loss)#更新参数dL_dw tape.gradient(Loss,W)W.assign_sub(learn_rate*dL_dw)#plt.plot(x,pred)if i % display_step0:print(i:%i,Loss:%f%(i,mse[i]))喜欢的话点个赞和关注呗