我对NN和机器学习非常陌生,所以我遇到了像这样简单的事情。我正在编写一个简单的程序,对花是一种类型还是另一种进行分类。
我首先分配了随机权重,并想在训练循环中调整这些权重。我的成本函数正在运行,但似乎无法计算出每个权重(w1和w2)和偏差的成本wrt的导数。我想使用计算出的导数来调整我的权重和偏见。我目前正在使用sympy,但是如果我要使用另一个,请告诉我。
import numpy as np
import matplotlib.pyplot as plt
import sympy as sp
# length, width, color
data = [[3, 1.5, 0], [2, 1, 1], [4, 1.5, 0], [3, 1, 1], [3.5, 0.5, 0], [2, 0.5, 1], [5.5, 1, 0], [1, 1, 1]]
mystery_flower = [4.5, 1, '?']
learning_rate = 0.01
w1 = np.random.randn()
w2 = np.random.randn()
bias = np.random.randn()
def sigmoid(x):
return 1/(1+np.exp(-x))
for n in range(0, 10): #10 simply for testing
random_index = np.random.randint(len(data))
point = data[random_index]
target = point[2]
equation = w1*point[0] + w2*point[1] + bias
prediction = sigmoid(equation)
cost = (prediction - target) ** 2
# Calculate derivaties for weights and bias wrt to cost
dcost_dw1 = sp.diff(cost, wr1)
# dcost_dw1 = dcost_dpred * dpred_deq * deq_dw1
# Update weights and bias
每次尝试在循环中使用sp.diff()
时,都会不断出现值错误。
错误是ValueError: Can't calculate derivative wrt 0.962802182433288.
显然每个循环的浮点都发生变化