Spaces:
Sleeping
Sleeping
| import cupy as cp | |
| class SGDMomentum: | |
| def __init__(self, layers, learning_rate=0.01, momentum=0.9): | |
| self.learning_rate = learning_rate | |
| self.momentum = momentum | |
| self.trainable_layers = [layer for layer in layers if hasattr(layer, 'weights')] | |
| self.velocities = [] | |
| for layer in self.trainable_layers: | |
| self.velocities.append({ | |
| 'W' : cp.zeros_like(layer.weights), | |
| 'b' : cp.zeros_like(layer.biases) | |
| }) | |
| def step(self): | |
| for idx, layer in enumerate(self.trainable_layers): | |
| self.velocities[idx]['W'] = (self.momentum * self.velocities[idx]['W']) - (self.learning_rate * layer.dW) | |
| self.velocities[idx]['b'] = (self.momentum * self.velocities[idx]['b']) - (self.learning_rate * layer.db) | |
| layer.weights += self.velocities[idx]['W'] | |
| layer.biases += self.velocities[idx]['b'] |