目录
- 1.1人工智能三学派
- 1.2 神经网络设计过程
- 1.3 张量生成
- 1.4 常用函数
- 1.4.1 求最大最小值等函数:
- 1.4.2 tf.Variable()函数将变量标记为“可训练”:
- 1.4.3 数学运算函数:
- 1.4.4 平方、次方与开方函数:
- 1.4.5 矩阵乘法函数 tf.matmul():
- 1.4.6 将特征与标签配对的函数 tf.data.Dataset.from_tensor_slices():
- 1.4.7 tf.GradientTape()函数实现指定函数对某个参数的梯度运算:
- 1.4.8 enumerate()函数将列表、元组或字符串打包成(索引元素):
- 1.4.9 tf.one_hot() 函数将待转换数据,转换为one-hot形式的数据输出:
- 1.4.10 tf.nn.softmax():
- 1.4.11 assign_sub() 赋值操作,更新参数的值并返回:
- 1.4.12 tf.argmax() 返回张量沿指定维度最大值的索引:
- 1.5 鸢尾花数据集读入
- 1.6 神经网络实现鸢尾花分类
1.1人工智能三学派
1.2 神经网络设计过程
下面看看步骤:
以上就是神经网络的全部过程。
看一个最简单的更新参数w的例子:
import tensorflow as tf
w = tf.Variable(tf.constant(5, dtype=tf.float32)) # tf.Variable()函数将变量标记为“可训练”:
lr = 0.2
epoch = 40
for epoch in range(epoch): # for epoch 定义顶层循环,表示对数据集循环epoch次,此例数据集数据仅有1个w,初始化时候constant赋值为5,循环40次迭代。
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))
# lr初始值:0.2 请自改学习率 0.001 0.999 看收敛过程
# 最终目的:找到 loss 最小 即 w = -1 的最优参数w
1.3 张量生成
这里是以TensorFlow2学习的。
1.3.1创建张量:
1.3.2将numpy数据类型转换为Tensor类型:
1.3.3创建一些特殊的张量:
下面看个例子: