深度学习基本概念以及神经网络实现鸢尾花分类
文章目录
基础知识
人工智能三学派
- 行为主义:基于控制论,构建感知-动作控制系统。(控制论,如平衡、行走、避障等自适应控制系统)
- 符号主义:基于算数逻辑表达式,求解问题时先把问题描述为表达式,再求解表达式。(可用公式描述,实现理性思维,如专家系统)
- 连接主义:仿生学,模仿神经元连接关系。(仿脑神经元连接,实现感性思维,如神经网络)
鸢尾花分类(Iris)
(1)鸢尾花
-
0够味草鸢尾花
-
1 杂色鸢尾花
-
2 弗吉尼亚鸢尾花
用神经网络实现鸢尾花分类
损失函数(loss function):预测值(y)与标准答案(y_)的差距
(2)神经网络实现鸢尾花分类:梯度下降
目的:找到一组参数b和w,使得损失函数最小
梯度:函数对各个参数求偏导后的向量,函数梯度下降方向是函数减少方向。
梯度下降法:沿着损失函数梯度下降方向,寻找损失函数的最小值,得到参数的方法
学习率:当过小,收敛过慢,过大时,梯度可能会在最小值附近来回震荡,甚至无法收敛。
反向传播:从后向前,逐层求损失函数的对每层神经元参数的偏导数,迭代更新所有参数。
tensorflow学习
张量生成
张量(Tensor):多维数组(列表),阶:张量的维数
tensorflow数据类型
创建张量
- tf.constant(张量内容,dtype=数据类型(可选))
#如何创建一个Tensor
import tensorflow as tf
a = tf.constant([1,5],dtype=tf.int64)
print(a)
print(a.dtype)
print(a.shape) #输出shape = (2,)一个逗号表示一维张量,两个元素
- 将numpy的数据类型转换为tensor数据类型
tf.convert_to_tensor(数据名,dtype=数据类型)
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(维度, 指定值)
代码:
a = tf.zeros([2,3])
b = tf.ones(4)
c = tf.fill([2, 2], 9)
print(a)
print(b)
print(c)
tf.Tensor(
[[0. 0. 0.]
[0. 0. 0.]], shape=(2, 3), dtype=float32)
tf.Tensor([1. 1. 1. 1.], shape=(4,), dtype=float32)
tf.Tensor(
[[9 9]
[9 9]], shape=(2, 2), dtype=int32)
- 生成正态分布的随机数,默认均值为0,标准差为1
tf.random.normal(维度, mean=均值, stddev=标准差)
- 生成截断式正态分布的随机数
tf.random.truncated_normal(维度, mean=均值,stddev=标准差)
常用函数
- (1)强制tensor转换为该数据类型
tf.cast(张量名, dtype=数据类型)
- (2)寻找张量维度上元素的最小值
tf.reduce_min(张量名)
- (3)寻找张量维度上元素的最大值
tf.reduce_max(张量名)
代码
x1 = tf.constant([1.,2.,3.], dtype=tf.float64)
print(x1)
x2 = tf.cast(x1, tf.int32)
print(x2)
print(tf.reduce_min(x2))
print(tf.reduce_max(x2))
tf.Tensor([1. 2. 3.