赞
踩
虽然学过Python了,但是很明显学的一塌糊涂
切片
>>>print(a)
[1, 2, 3, 4, 99]
>>>a[0: 2] # 获取索引为0到(2-1)的元素
[1, 2]
>>>a[1: ] # 获取从索引为1的元素到最后一个元素
[2, 3, 4, 99]
>>>a[ :3] # 获取从第一个元素到索引为(3-1)的元素
[1, 2, 3]
>>>a[ :-1] # 获取从第一个元素到(-1-1)的元素
[1, 2, 3, 4]
>>>a[ :-2] # 获取从第一个元素到(-2-1)的元素
[1, 2, 3]
索引-1对应最后一个元素。
字典以键值对的形式存储数据
>>>me = {'height': 180} # 生成字典
>>>me['height'] # 访问元素
180
>>>me['weight'] = 70 # 添加新元素
>>>print(me)
{'height': 180, 'weight': 70}
运算符and、or、not
使用*for…in…*语句结构,可以顺序访问列表等数据集合中的各个元素。
函数可以取参数
def hello(object):
print("Hello " + object + "!")
字符串的拼接可以使用+
int和str等数据类型是“内置”的数据类型。
用户自己定义类的话,就可以自己创建数据类型,同时可以定义原创的方法(类的函数)和属性。
class定义类
class 类名
def __init__(self, 参数, …): # 构造函数
def fun1(self, 参数, …): #方法1
构造函数:__init__方法
,只在生成类的实例时被调用一次,接收参数,再初始化实例变量self.参数
,实例变量存储在各个实例中。在方法的第一个参数中明确地写入表示自身(自身的实例)的self,Python可以通过在self后面添加属性名来生成或访问实例变量。
生成numpy的数组类可以调用对应的方法。
>>>x = np.array([1.0, 2.0, 3.0])
>>>print(x)
[1. 2. 3.]
>>>type(x)
<class 'numpy.ndarray'>
数组+/-数组,对应元素加对应元素,元素个数不同,程序就会报错。
高维数组x//标量/低维数组,通过广播进行运算(先扩为高维数组再对应元素计算)。
一维数组:向量
二维数组:矩阵
一般化之后的向量或矩阵等统称为张量。
在数学和物理学中,"一般化"通常指的是将特定的数学概念或物理现象推广到更一般的情况。在张量的概念中,一般化指的是将向量和矩阵等特定的数学对象推广到更高维度的对象,从而得到更一般的数学结构。张量可以看作是向量和矩阵的一般化,它可以在多维空间中描述各种物理量的分布和变化规律。
标量10被扩展成了2x2的形状。
>>>x = x.flatten() # 将x转换为一维数组
>>>print(x)
[1 2 3 4 5 6]
>>>x[np.array([0, 2, 4])] # 获取索引为0、2、4的元素
array([1, 3, 5])
# 从x中抽出大于3的元素
>>>x >3
array([False, False, False, True, True, True], dtype = bool)
>>>x[x>15]
array([4, 5, 6])
绘制图形的库
x = np.arange(0, 6, 0.1) # 以0.1为单位,生成0到6的数据
y1 = np.sin(x)
y2 = np.cos(x)
plt.plot(x, y1, label = "sin")
plt.plot(x, y2, linestyle = "--", label = "cos") # 用虚线绘制
plt.xlabel("x") # x轴标签
plt.ylabel("y")
plt.title('sin&cos') # 标题
plt.legend() # 图例
plt.show()
from matplotlib.image import imread
img = imread('lena.png') # 读入图像
plt.imshow(img)
plt.show()
感知机是神经网络(深度学习)的起源算法。
本章中提到的感知机应该称为“人工神经元”或“朴素感知机”。
上图中输入信号
x
1
,
x
2
x_1,x_2
x1,x2,权重
w
1
,
w
2
w_1,w_2
w1,w2,输出信号
y
y
y。图中的○称为“神经元”或“节点”。
y
=
w
1
x
1
+
w
2
x
2
y=w_1x_1+w_2x_2
y=w1x1+w2x2
当总和超过阈值
θ
\theta
θ时,才会输出1,称为“神经元被激活”。
y
=
{
0
(
ω
1
x
1
+
ω
2
x
2
≤
θ
)
1
(
ω
1
x
1
+
ω
2
x
2
>
θ
)
y=\left\{ 0(ω1x1+ω2x2≤θ)1(ω1x1+ω2x2>θ) \right.
y={01(ω1x1+ω2x2≤θ)(ω1x1+ω2x2>θ)
权重越大,对应该权重的信号就越重要。
通过设置权重和阈值可以用感知机实现与门、与非门、或门。机器学习的课题就是将决定参数值的工作交由计算机完成。
y
=
{
0
(
b
+
ω
1
x
1
+
ω
2
x
2
≤
0
)
1
(
b
+
ω
1
x
1
+
ω
2
x
2
>
0
)
y = \left\{ {0(b+ω1x1+ω2x2≤0)1(b+ω1x1+ω2x2>0)} \right.
y={01(b+ω1x1+ω2x2≤0)(b+ω1x1+ω2x2>0)
b
b
b为偏置,实际上就是将
θ
\theta
θ移动到左侧。
权重是控制输入信号的重要性的参数,而偏置是调整神经元被激活的容易程度的参数。
感知机无法实现异或门。
由上文可知,我们运用的是单层感知机,对于与门、与非门、或门来说,单层感知机足以生成由直线分隔开的两个空间,一个空间输出0,一个空间输出1。例如下图的与门形象化图:
对于异或门来说,仅当一方为1时,才会被激活。
对于此时的异或门空间来说,一条直线不足以分割0和1的空间。
感知机的局限性就在于它只能表示由一条直线分割的空间。曲线分割的空间称为非线性空间,直线分割的空间为线性空间。
感知机可以“叠加层”。
单层感知机无法分离非线性空间,多层感知机可以实现异或门。
一些电路的记忆恢复了。
本书认为拥有权重的层实质上只有2层,多以称为“两层感知机”。(接收输入信号并没有进行运算,0层不算层,也没什么问题。)
多层感知机可以实现更复杂的电路,输入->输出。
计算机是处理信息的机器。
所以只需要通过与非门的组合,就能再现计算机进行的处理。所以感知机可以表示计算机。
什么不等式行为。
上述都是理论结果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。