#!/usr/bin/Python
import numpy as np
# m denotes the number of examples here, not the number of features
def gradientDescent(x, y, theta, alpha, m, numIterations):
xTrans = x.transpose()
for i in range(0, numIterations):
hypothesis = np.dot(x, theta)
loss = hypothesis - y
# avg cost per example (the 2 in 2*m doesn't really matter here.
# But to be consistent with the gradient, I include it)
cost = np.sum(loss ** 2) / (2 * m)
#print("Iteration %d | Cost: %f" % (i, cost))
# avg gradient per example
gradient = np.dot(xTrans, loss) / m
# update
theta = theta - alpha * gradient
return theta
X = np.array([41.9,43.4,43.9,44.5,47.3,47.5,47.9,50.2,52.8,53.2,56.7,57.0,63.5,65.3,71.1,77.0,77.8])
y = np.array([251.3,251.3,248.3,267.5,273.0,276.5,270.3,274.9,285.0,290.0,297.0,302.5,304.5,309.3,321.7,330.7,349.0])
n = np.max(X.shape)
x = np.vstack([np.ones(n), X]).T
m, n = np.shape(x)
numIterations= 100000
alpha = 0.0005
theta = np.ones(n)
theta = gradientDescent(x, y, theta, alpha, m, numIterations)
print(theta)
Теперь мой приведенный выше код работает нормально. Если я теперь попробую несколько переменных и заменю X на X1 следующим образом:
Я изучаю градиентный спуск для расчета коэффициентов. Ниже описано, что я делаю:
[code]#!/usr/bin/Python
import numpy as np
# m denotes the number of examples here, not the number of features def gradientDescent(x, y, theta, alpha, m, numIterations): xTrans = x.transpose() for i in range(0, numIterations): hypothesis = np.dot(x, theta) loss = hypothesis - y # avg cost per example (the 2 in 2*m doesn't really matter here. # But to be consistent with the gradient, I include it) cost = np.sum(loss ** 2) / (2 * m) #print("Iteration %d | Cost: %f" % (i, cost)) # avg gradient per example gradient = np.dot(xTrans, loss) / m # update theta = theta - alpha * gradient return theta
X = np.array([41.9,43.4,43.9,44.5,47.3,47.5,47.9,50.2,52.8,53.2,56.7,57.0,63.5,65.3,71.1,77.0,77.8]) y = np.array([251.3,251.3,248.3,267.5,273.0,276.5,270.3,274.9,285.0,290.0,297.0,302.5,304.5,309.3,321.7,330.7,349.0]) n = np.max(X.shape) x = np.vstack([np.ones(n), X]).T m, n = np.shape(x) numIterations= 100000 alpha = 0.0005 theta = np.ones(n) theta = gradientDescent(x, y, theta, alpha, m, numIterations) print(theta) [/code]
Теперь мой приведенный выше код работает нормально. Если я теперь попробую несколько переменных и заменю X на X1 следующим образом:
Я пытаюсь создать простую нейронную сеть на Python. Используя это видео ( hfMk-kjRv4c я пытаюсь добавить порог, при котором, если входной нейрон/узел превысит его, будет возвращено значение, равное единице. Я внедрил пороговое значение вручную, но...
В чем разница между реализацией градиентного спуска из учебника и реализацией тензорных потоков?
Либо я делаю ошибку при градиентном спуске, либо тензорный поток что-то делает кроме реализации учебника. Я не могу понять, какой именно.
Я написал код...
Я хочу использовать градиентный спуск в регрессии опорных векторов (SVR). Есть ли какая-нибудь инструкция по этому поводу?
Градиентный спуск Или другие методы для повышения точности аппроксимации
Градиентный спуск для SVR из-за уменьшения...
Я собрал и установил abseil из исходного кода следующим образом:
cd ./abseil-cpp
git checkout 5dd240724366295970c613ed23d0092bcf392f18
mkdir build
cd ./build
cmake -DCMAKE_CXX_STANDARD=17 ..
make -j 4
sudo make install