-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathopt.py
More file actions
31 lines (25 loc) · 882 Bytes
/
Copy pathopt.py
File metadata and controls
31 lines (25 loc) · 882 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import numpy as np
from op import *
import op
import gradients
import node
import executor
class Optimizer:
def __init__(self, cost,parameters):
assert parameters, 'Your parameters?'
self.parameters = list(parameters)
self.cost = cost
self.grads = gradients.gradients(self.cost,self.parameters)
self.exe=executor.Executor([self.cost]+self.grads)
# def zero_grad(self):
# for x in self.grads_val:
# #p.grad = np.zeros_like(p.data)
# x *= 0.0
def step(self, lr=0.01):
assert False, 'Optimizer class is virtual'
class SGD(Optimizer):
def step(self, feed_dict,lr=0.1):
output = self.exe.run(feed_dict)
#print("=============================>",output[0])
for i in range(len(self.parameters)):
self.parameters[i].const-=lr*output[i+1]