1.数据载入
这次我用神经网络给鸢尾花分类,用python自带的鸢尾花数据集来进行
1.1代码操作
import tensorflow as tf## 安装tensorflow
w=tf.Variable(tf.constant(5,dtype=tf.float32))## 设定参数w初始值为5
lr=0.2 ## 设定学习率为0.2
epoch=40
设置好了初始参数后,进行下一步
for epoch in range(epoch): # for epoch 定义顶层循环,表示对数据集循环epoch次,此例数据集数据仅有1个w,初始化时候constant赋值为5,循环100次迭代。
with tf.GradientTape() as tape: # with结构到grads框起了梯度的计算过程。
loss = tf.square(w + 1)
grads = tape.gradient(loss, w) # .gradient函数告知谁对谁求导
w.assign_sub(lr * grads) ## assign_sub 对变量做自减 即:w -= lr*grads 即 w = w - lr*grads
print("After %s epoch,w is %f,loss is %f" % (epoch, w.numpy(), loss)) ## 找出最优值
可以看出损失函数为36,w值为2.6时为最优值。
2.如何创建一个tensor
2.1 用tf.constant(张量内容,dtype=数据类型(可选))
例如:创建一个一阶张量,里面有两个元素1,5,数据类型为64位整型
a=tf.constant([1,5],dtype=tf.int64)
print(a)
print(a.dtype)
print(a.shape)
输出结果
2.2 将numpy数据类型转换为tensor型数据类型
tf.convert_to_tensor(数据名,dtype=数据类型(可选))
例如:将numpy格式a转换为tensor格式b
import tensorflow as tf
import numpy as np
b=tf.convert_to_tensor(a,dtype=tf.int64)
a=np.arange(0,5)
print(a)
print(b)
输出结果
2.3创建张量
创建全为零的张量tf.zeros(维度),创建全为1的张量tf.ones(维度),创建全为指定值的张量tf.fill(维度,指定值).
例如
a=tf.zeros([2,3])
b=tf.ones(4)
c=tf.fill([2,2],9)
print(a)
print(b)
print(c)
输出结果
2.4生成正态分布随机函数
生成正态分布随机函数,默认均值为0,标准差为1
tf.random.normal(维度,mean=均值,stddev=标准差)
生成截断式正态分布随机数
tf.random.truncated_normal(维度,mean=均值,stddev=标准差),如果我们希望生成的数更集中一些
则random.truncated_normal保证了生成的随机数在μ±2a之间。
例如:
a=tf.random.normal([2,2],mean=0.5,stddev=1)
b=tf.random.truncated_normal([2,2],mean=0.5,stddev=1)
print(a)
print(b)
输出结果