创建用于训练的单个感知器

2024-04-26 04:58:40 发布

您现在位置:Python中文网/ 问答频道 /正文

学习感知器如何工作,并试图从中创建一个函数。你知道吗

我最近在youtube看了一段视频,作为对上述主题的介绍。你知道吗

现在,我试着模仿他的功能,我想试着在一个示例数据集中应用它:

#         x1    x2  y
data = [ [3.5, 1.5, 1],
         [2.0, 1.0, 0],
         [4.0, 1.5, 1],
         [3.0, 1.0, 0],
         [3.5, 0.5, 1],
         [2.0, 0.5, 0],
         [5.5, 1.0, 1],
         [1.0, 1.0, 0],
         [4.5, 1.0, 1] ]

data = pd.DataFrame(data, columns = ["Length", "Width", "Class"])

乙状结肠功能:

def sigmoid(x):
    x = 1 / (1 + np.exp(-x))
    return x

感知器功能:

w1 = np.random.randn()
w2 = np.random.randn()
b = np.random.randn()

def perceptron(x1,x2, w1, w2, b):

    z = (w1 * x1) + (w2 * x2) + b

    return sigmoid(z)

我的问题是如何在感知器中添加代价函数,并根据一个参数循环n次,以使用代价函数调整权重?你知道吗

def get_cost_slope(b,a):
    """
    b = predicted value
    a = actual value
    """

    sqrerror = (b - a) ** 2
    slope = 2 * (b-a)

    return sqrerror, slope

Tags: 函数功能datareturndefnprandomslope
1条回答
网友
1楼 · 发布于 2024-04-26 04:58:40

您需要创建一个方法,该方法将通过感知器进行反向传播并优化权重。你知道吗

def optimize( a , b ):

    sqrerror = (b - a) ** 2
    cost_deriv = 2 * (b-a)

    sigmoid_deriv = z * ( 1 - z ) # derivative of sigmoid function

    learning_rate = 0.001 # Used to scale the gradients

    w1 -= ( cost_deriv * sigmoid_deriv * x1 ) * learning_rate # Gradient Descent update rule
    w2 -= ( cost_deriv * sigmoid_deriv * x2 ) * learning_rate
    b -= ( cost_deriv * sigmoid_deriv ) * learning_rate

从那以后

Partial Derivative

其中,$J$是成本函数。你知道吗

相关问题 更多 >