This commit is contained in:
2025-12-01 22:32:52 +04:00
parent 153a13f443
commit 4494e677b4
2 changed files with 5 additions and 4 deletions

View File

@@ -13,9 +13,10 @@
- Движок для создания нейронных сетей - Движок для создания нейронных сетей
- Поддержка вычислений [на CPU](./src/tensor/cpu/) или [на GPU с использованием OpenCL](./src/tensor/opencl/) - Поддержка вычислений [на CPU](./src/tensor/cpu/) или [на GPU с использованием OpenCL](./src/tensor/opencl/)
- [Алгоритмы массового параллелизма на GPU](./src/tensor/opencl/kernels) для быстрых вычислений - [Алгоритмы массового параллелизма на GPU](./src/tensor/opencl/kernels.hpp) для быстрых вычислений
- Классические алгоритмы на CPU для возможности проверки - Классические алгоритмы на CPU для возможности проверки
- [Класс Tensor](./src/tensor/tensor.hpp) для работы с тензорами произвольной размерности - [Класс Tensor](./src/tensor/tensor.hpp) для работы с тензорами произвольной размерности
- [Пример обучения нейронной сети вычисления XOR на Python](./src/run.py)
## Forward & Back propogation - это путешествие в Мордор и обратно! ## Forward & Back propogation - это путешествие в Мордор и обратно!

View File

@@ -1,4 +1,4 @@
import tensor.tensor as T import tensor as T
if (T.MODE == T.PLATFORM.OPENCL): if (T.MODE == T.PLATFORM.OPENCL):
T.init() T.init()
@@ -45,7 +45,7 @@ class NN:
lossVector = self.layers[len(self.layers) - lossVector = self.layers[len(self.layers) -
1].outputs - target 1].outputs - target
# print("loss", lossVector(T.FUNCTION.MSE)) print("loss", lossVector(T.FUNCTION.MSE))
dAnl = lossVector(T.FUNCTION.MSE, True) dAnl = lossVector(T.FUNCTION.MSE, True)
for i in range(len(self.layers)-1, -1, -1): for i in range(len(self.layers)-1, -1, -1):
dZl = dAnl * \ dZl = dAnl * \
@@ -55,7 +55,7 @@ class NN:
dbl = dZl dbl = dZl
# dbl = dZl.sum(axis=1).reshape(dZl.shape[0], 1) # dbl = dZl.sum(axis=1).reshape(dZl.shape[0], 1)
dAnl = self.layers[i].weights.t() @ dZl dAnl = self.layers[i].weights.t() @ dZl
self.layers[i].weights.t() print(self.layers[i].weights)
self.layers[i].weights += (dWl * -0.3) self.layers[i].weights += (dWl * -0.3)
self.layers[i].bias += (dbl * -0.3) self.layers[i].bias += (dbl * -0.3)