基于python的ansys_基于python的感知机

一、

1、感知机可以描述为一个线性方程,用python的伪代码可表示为:

sum(weight_i * x_i) + bias -> activation  #activation表示激活函数,x_i和weight_i是分别为与当前神经元连接的其它神经元的输入以及连接的权重。bias表示当前神经元的输出阀值(或称偏置)。箭头(->)左边的数据,就是激活函数的输入

2、定义激活函数f:

def func_activator(input_value):

return 1.0 if input_value >= 0.0 else 0.0

二、感知机的构建

class Perceptron(object):

def __init__(self, input_para_num, acti_func):

self.activator = acti_func

self.weights = [0.0 for _ in range(input_para_num)]

def __str__(self):

return 'final weights\n\tw0 = {:.2f}\n\tw1 = {:.2f}\n\tw2 = {:.2f}' \

.format(self.weights[0],self.weights[1],self.weights[2])

def predict(self, row_vec):

act_values = 0.0

for i in range(len(self.weights)):

act_values += self.weights [ i ] * row_vec [ i ]

return self.activator(act_values)

def train(self, dataset, iteration, rate):

for i in range(iteration):

for input_vec_label in dataset:

prediction = self.predict(input_vec_label)

self._update_weights(input_vec_label,prediction, rate)

def _update_weights(self, input_vec_label, prediction, rate):

delta = input_vec_label[-1] - prediction

for i in range(len(self.weights):

self.weights[ i ] += rate * delta * input_vec_label[ i ]

def func_activator(input_value):

return 1.0 if input_value >= 0.0 else 0.0

def get_training_dataset():

dataset = [[-1, 1, 1, 1], [-1, 0, 0, 0], [-1, 1, 0, 0], [-1, 0, 1, 0]]

return dataset

def train_and_perceptron():

p = Perceptron(3, func_activator)

dataset = get_training_dataset()

return p

if __name__ == '__main__':

and_prerception = train_and_perceptron

print(and_prerception)

print('1 and 1 = %d' % and_perception.predict([-1, 1, 1]))

print('0 and 0 = %d' % and_perception.predict([-1, 1, 1]))

print('1 and 0 = %d' % and_perception.predict([-1, 1, 1]))

print('0 and 1 = %d' % and_perception.predict([-1, 1, 1]))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值