编写python代码,实现感知器的 and和OR 操作算法
时间: 2024-05-15 08:20:05 浏览: 99
AND操作感知器算法:
```python
import numpy as np
# 定义感知器类
class Perceptron:
def __init__(self, input_num, activator):
self.activator = activator # 激活函数
self.weights = np.zeros(input_num) # 权重向量
self.bias = 0 # 偏置项
# 计算感知器输出
def _output(self, input_vec):
# 计算向量内积
return self.activator(np.dot(input_vec, self.weights) + self.bias)
# 迭代训练感知器
def train(self, input_vecs, labels, iteration, rate):
for i in range(iteration):
self._one_iteration(input_vecs, labels, rate)
# 单次迭代训练感知器
def _one_iteration(self, input_vecs, labels, rate):
for input_vec, label in zip(input_vecs, labels):
output = self._output(input_vec)
# 更新权重
self.weights += rate * (label - output) * input_vec
# 更新偏置项
self.bias += rate * (label - output)
# 激活函数
def f(x):
return 1 if x > 0 else 0
# 训练数据集
input_vecs = [[1, 1], [1, 0], [0, 1], [0, 0]]
labels = [1, 0, 0, 0]
# 创建感知器实例并训练
p = Perceptron(2, f)
p.train(input_vecs, labels, 10, 0.1)
# 测试感知器
print('1 and 1 =', p._output([1, 1])) # 1
print('1 and 0 =', p._output([1, 0])) # 0
print('0 and 1 =', p._output([0, 1])) # 0
print('0 and 0 =', p._output([0, 0])) # 0
```
OR操作感知器算法:
```python
import numpy as np
# 定义感知器类
class Perceptron:
def __init__(self, input_num, activator):
self.activator = activator # 激活函数
self.weights = np.zeros(input_num) # 权重向量
self.bias = 0 # 偏置项
# 计算感知器输出
def _output(self, input_vec):
# 计算向量内积
return self.activator(np.dot(input_vec, self.weights) + self.bias)
# 迭代训练感知器
def train(self, input_vecs, labels, iteration, rate):
for i in range(iteration):
self._one_iteration(input_vecs, labels, rate)
# 单次迭代训练感知器
def _one_iteration(self, input_vecs, labels, rate):
for input_vec, label in zip(input_vecs, labels):
output = self._output(input_vec)
# 更新权重
self.weights += rate * (label - output) * input_vec
# 更新偏置项
self.bias += rate * (label - output)
# 激活函数
def f(x):
return 1 if x > 0 else 0
# 训练数据集
input_vecs = [[1, 1], [1, 0], [0, 1], [0, 0]]
labels = [1, 1, 1, 0]
# 创建感知器实例并训练
p = Perceptron(2, f)
p.train(input_vecs, labels, 10, 0.1)
# 测试感知器
print('1 or 1 =', p._output([1, 1])) # 1
print('1 or 0 =', p._output([1, 0])) # 1
print('0 or 1 =', p._output([0, 1])) # 1
print('0 or 0 =', p._output([0, 0])) # 0
```
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)