Я понял, что иногда моя модель расходится, когда я уменьшаю скорость обучения, я не мог точно понять проблему, но я верю, что это зависит от инициализации моего веса, потому что это происходит не всегда.
инициализация матрицы весов в соответствии с нормальным распределением со средним нулем
def createW(numberOfRows,numberOfColumns):
mu, sigma = 0, 0.1 # mean and standard deviation
W = np.random.normal(mu, sigma,(numberOfRows,numberOfColumns))
return W
форма данных (3,2 * n)
Целевая форма (1,2 * n)
Вес матрицы должен быть (1,3)
W = createW(1,3)
def deltaBatchLearning(data,target,W,numberOfEpochs,alpha):
costHistory = []
for i in range(numberOfEpochs):
deltaW = -alpha*np.dot((np.dot(W,data) - target),(data.T))
W = W + deltaW
costHistory.append(np.sum(target - np.dot(W,data)))
return costHistory,W
numberofEpochs = 20
alpha = 0.0001
jvec,W = deltaBatchLearning(data,target,W,numberofEpochs,alpha)
jvec = np.absolute(jvec)