- initial commit
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
# This is a sample Python script.
|
||||
|
||||
# Press Umschalt+F10 to execute it or replace it with your code.
|
||||
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
|
||||
|
||||
import numpy as np
|
||||
|
||||
|
||||
def conv2d(z, h):
|
||||
sub_shape = h.shape
|
||||
view_shape = tuple(np.subtract(z.shape, sub_shape) + 1) + sub_shape
|
||||
strides = z.strides + z.strides
|
||||
sub_matrices = np.lib.stride_tricks.as_strided(z, view_shape, strides)
|
||||
m = np.einsum('ij,klij->kl', h, sub_matrices)
|
||||
|
||||
return m
|
||||
|
||||
|
||||
def state_expand(state, h, ovl_init=0):
|
||||
hw, hh = h.shape
|
||||
xw, xh = state.shape
|
||||
ovl_w = int((hw-1)/2)
|
||||
ovl_h = int((hh-1)/2)
|
||||
z = np.ones((xw+2*ovl_w, xh+2*ovl_h))*ovl_init
|
||||
z[ovl_w:ovl_w+xw, ovl_h:ovl_w+xh] = state
|
||||
|
||||
return z
|
||||
|
||||
|
||||
def state_init_incremental(size):
|
||||
state = np.zeros((size, size))
|
||||
k = 1
|
||||
m, n = np.shape(state)
|
||||
for i in range(0, m):
|
||||
for j in range(0, n):
|
||||
state[i, j] = k
|
||||
k += 1
|
||||
|
||||
return state
|
||||
|
||||
|
||||
def state_init_constant(size, ic=0):
|
||||
h = np.ones((size, size))*ic
|
||||
return h
|
||||
|
||||
|
||||
def h_init(s=1):
|
||||
h = np.array([[1,1,1], [1,0,1], [1,1,1]])*s
|
||||
return h
|
||||
|
||||
|
||||
# Press the green button in the gutter to run the script.
|
||||
if __name__ == '__main__':
|
||||
state = state_init_incremental(5)
|
||||
state = state_init_constant(5, 0)
|
||||
h = h_init(1.0/8)
|
||||
print (h)
|
||||
for i in range(0,10,1):
|
||||
state[0, 0] = 0
|
||||
if i == 0:
|
||||
state[0, 0] = 1
|
||||
state_ex = state_expand(state, h)
|
||||
state = 0.5*state + 0.5*conv2d(state_ex, h)
|
||||
print(state)
|
||||
|
||||
|
||||
# See PyCharm help at https://www.jetbrains.com/help/pycharm/
|
||||
Reference in New Issue
Block a user