人工智能class1

人工智能工具课


人工智能的主流方向—连接主义

人工智能三学派:

行为主义:基于控制论,构建感知-动作控制系统,

符号主义:基于算数逻辑表达式,求解问题时先把问题描述为表达式,再求解表达式,

连接主义:仿生学,模拟神经元连接关系,用计算机仿出神经网络连接关系,让计算机具备感性思维

过程:

准备数据:采集大量特征/标签数据

搭建网络:搭建神经网络结构获取最佳参数(反转)

应用网络:将网络保存为模型,输入新数据,输出分类或预测结果(前传)

前向传播


鸢尾花分类(Iris):

if语句case语句—专家系统:

把专家经验告知计算机,计算机执行逻辑判别(理性计算),给出分类。

神经网络:

采集大量的数据(输入特征:花萼长,花萼宽,标签:对应类别)构成数据集把数据集喂入搭建好的神经网络结构,网络优化参数得到模型,模型读入新输入特征,输出识别结果。

MP模型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vTwyeGOP-1604246713607)(G:\研究方向\笔记\photo\人工智能的主流方向\image-20201101154333396.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5wwxroyB-1604246713615)(G:\研究方向\笔记\photo\人工智能的主流方向\image-20201101154407575.png)]

损失函数:

预测值(y)与标准答案(y_)的差距。损失函数可以定量判断W、b的优劣,当损失函数输出最小时,参数W,b会出现最优值。

例子

**均方误差MSE**[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p2kSIiLM-1604246713622)(G:\研究方向\笔记\photo\人工智能的主流方向\image-20201101154840426.png)]

目的:

想找到一组参数w和b,使得损失函数最小

梯度:

函数对各参数求偏导后的向量。函数梯度下降方向是函数减小方向。

梯度下降法:

沿损失函数梯度下降的方向,寻找损失函数的最小值,得到最优参数的方法。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4rYJhSX9-1604246713628)(G:\研究方向\笔记\photo\人工智能的主流方向\image-20201101155324729.png)]

学习率(learning rate lr):

当学习率设置的过小时,收敛过程将变得十分缓慢,而当学习率设置的过大时,梯度可能会在最小值附近来回震荡,甚至可能无法收敛

反向传播:

从后向前,逐层求损失函数对每层神经元参数的偏导数,迭代更新所有参数。


Tensorflow起步

张量常见定义

Tensorflow中Tensor就是张量:多维数组(列表)

:张量的维数

0阶张量:数字

1阶张量:向量

2阶张量:矩阵

n阶张量:n阶数组

数据类型:

tf.int 32 tf.float21 tf.float 64 tf.bool tf.string

如何创建一个Tensor
1.创建一个张量

tf.constant(张量内容,dtype=数据类型(可选))

import tensorflow as tf
a=tf.constant([1,5],dtype=tf.int64)
print(a)
print(a.dtype)
print(a.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)
3.创建全为0的张量:

tf.zeros(维度)

4.创建全为1的张量:

tf.ones(维度)

5.创建全为指定值的张量:

tf.fill(维度,指定值)

a=tf.zeros([2,3])
b=tf.ones(4)
c=tf.fill([2,2],9)
print(a)
print(b)
print(c)

维度记忆法:

一维 直接写个数

二维 用[行,列]

多维 用[n,m,j,k…]

6.生成正态的随机数默认均值为0,标准差为1

tf.random.normal(维度,mean=均值,stddev=标准差)

7.生成截断式正态分布的随机数

tf.random.truncated_normal(维度,mean=均值,stddev=标准差)

在tf.truncated_normal中如果随机生成数据的取值在(μ-2σ,μ+2σ)之外,则重新进行生成,保证了生成值在均值附近。μ为均值,σ为标准差

标准差的计算公式 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2tYg9XPu-1604246713633)(G:\研究方向\笔记\photo\人工智能的主流方向\image-20201101164243635.png)]

d =tf.random.normal([2,2],mean=0.5,stddev=1)
print(d)
e=tf.random.truncated_normal([2,2],mean=0.5,stddev=1)
print(e)
8.生成均匀分布随机数[minval,maxval)前必后开

tf.random.uniform(维度,minval=最小值,maxval=最大值)

f=tf.random.uniform([2,2],minval=0,maxval=1)
print(f)

常用函数一

1.强制tensor转换为该数据类型

tf.cast(张量名,dtype=数据类型)

2.计算张量维度上元素的最小值

tf.reduce_min(张量名)

3.计算张量维度上元素的最大值

tf.reduce_max(张量名)

x1=tf.constant([1,2,3],dtype=tf.float(64)
x2=tf.cast(x1,tf.int32)
print(x2)
print(tf.reduce_min(x2),tf.reduce_max(x2))
4.理解axis

在一个二维张量或数组中,可以通过axis等于0或1控制执行维度。axis=0代表跨行(经度,down),而axis=1代表跨列(纬度,across),如果不指定axis,则所有元素参与计算。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BIP7PNP0-1604246713635)(G:\研究方向\笔记\photo\人工智能的主流方向\image-20201101171450490.png)]

5.计算张量沿指定维度的平均值

tf.reduce_mean(张量名,axis=操作轴)

6.计算张量沿着指定维度的和

tf.reduce_sum(张量名,axis=操作轴)

x=tf.constant([[1,2,3],[2,2,3]])
print(x)
print(tf.reduce_mean(x))
print(tf.reduce_sum(x,axis=1))
7. tf.Variable()函数将变量标记为可训练的

被标记的变量会在反向传播中记录梯度信息。神经网络训练中,常用该函数标记待训练参数。

tf.Variable(初始值)

#初始化参数w的代码
w=tf.Variable(tf.random.normal([2,2],mean=0,stddev=1))

8.Tensorflow中的数学计算

8.1四则运算:tf.add,tf.subtract,tf.multiply,tf.divide

只有维度相同的张量才可以做四则运算

a=tf.ones([1,3],dtype=tf.int32)
b=tf.fill([1,3],3)
print(a)
print(b)
print(tf.add(a,b))
print(tf.multiply(a,b))
print(tf.divide(b,a))

8.2平方,开方,次方:tf.square,tf.sqrt,tf.pow

a=tf.fill([1,2],4.0)
print(a)
print(tf.pow(a,3))
print(tf.square(a))
print(tf.sqrt(a))

8.3矩阵乘:tf.matmul

a=tf.ones([3,2])
b=tf.fill([2,3],3.0)
print(tf.matmul(a,b))
9.tf.data.Dataset.from_tensor_slices

切分传入张量的第一维度,生成输入特征/表情对,构建数据集

data=tf.data.Dataset.from_tensor_slices((输入标签,标签))

Numpy和Tensor格式都可用该语句读入数据

features=tf.constant([12,23,10,17])
labels=tf.constant([0,1,1,0])
dataset=tf.data.Dataset.from_tensor_slices((features,labels))
print(dataset)
for element in dataset:
    print(element)

常用函数二

1.tf.GradientTape

with结构记录计算过程,gradient求出张量梯度

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kQbhVIMs-1604246713637)(G:\研究方向\笔记\photo\人工智能的主流方向\image-20201101180847157.png)]

with tf.GradientTape() as tape:
    若干计算过程
grad=tape.grandient(函数,对谁求导)
#
with tf.GradientTape() as tape:
    w=tf.Variable(tf.constant(3.0))
    loss=tf.pow(w,2)
grad=tape.gradient(loss,w)
print(grad)
2.enumerate

enumerate是python的内建函数,它可遍历每个元素(如列表、元组、字符串),组合为:索引 元素,常在for循环中使用

enumerate(列表名)

seq=['one','two','three']
for i,element in enumerate(seq):
    print(i,element)
3.tf.one_hot

独热编码(one-hot encoding):在分类问题中,常用热独码做标签,标记类别,1表示是,0表示非。

tf.one_hot()函数将待转换数据,转换为one-hot形式的数据输出

tf.one_hot(待转换数据,depth=几分类)

classes=3
label=tf.constant([1,0,2])
output=tf.one_hot(labels,depth=classes)
print(output)
4.tf.nn.softmax

tf.nn.softmax(x)使输出符合概率分布[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zYj7Vn3H-1604246713638)(G:\研究方向\笔记\photo\人工智能的主流方向\image-20201101181328518.png)]

当n分类的n个输出(y0,y1,…yn-1)通过softmax()函数,便可使分布符合概率分布

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pjIz5S1I-1604246713641)(G:\研究方向\笔记\photo\人工智能的主流方向\image-20201101181503858.png)]

y=tf.constant([1.01,2.01,-0.66])
y_pro=tf.nn.softmax(y)
print("after softmax ,y_pro is",y_pro)
5.assign_sub

赋值操作,更新参数的值并返回。

调用assign_sub之前,先用tf.Variable定义变量w为可训练(可自更新)

w.assign_sub(w要自减的内容)

w=tf.Variable(4)
#w-=1  ===>w=w-1
w.assign_sub(1)
print(w)
6.tf.argmax

返回张量沿指定维度最大值的索引tf.argmax(张量名,axis=操作轴)

import numpy as py
test=np.array([[1,2,3], [2, 3, 4], [5, 4, 3], [8, 7, 2]])
print(test)
#返回每列最大值索引
print(tf.argmax(test,axis=0))
#返回没行最大值索引
print(tf.argmax(test,axis=1))

鸢尾花数据集

从sklearn包datasets读入数据集,语法为:

from sklearn.datasets import load_iris
#返回iris数据集所有输入特征
x_data=datasets.load_iris().data
#返回iris数据集所有标签
y_data=datasets.load_iris().target

`python
import numpy as py
test=np.array([[1,2,3], [2, 3, 4], [5, 4, 3], [8, 7, 2]])
print(test)
#返回每列最大值索引
print(tf.argmax(test,axis=0))
#返回没行最大值索引
print(tf.argmax(test,axis=1))


-------

### 鸢尾花数据集

从sklearn包datasets读入数据集,语法为:

```python
from sklearn.datasets import load_iris
#返回iris数据集所有输入特征
x_data=datasets.load_iris().data
#返回iris数据集所有标签
y_data=datasets.load_iris().target
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值