Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def _compute_receptive_field(self, img_size=None):
# TODO: good enough?
from scipy.ndimage import zoom
if img_size is None:
img_size = tuple(g*(128 if self.config.n_dim==2 else 64) for g in self.config.grid)
if np.isscalar(img_size):
img_size = (img_size,) * self.config.n_dim
img_size = tuple(img_size)
# print(img_size)
assert all(_is_power_of_2(s) for s in img_size)
mid = tuple(s//2 for s in img_size)
dummy = np.empty((1,)+img_size+(1,), dtype=np.float32)
x = np.zeros((1,)+img_size+(self.config.n_channel_in,), dtype=np.float32)
z = np.zeros_like(x)
x[(0,)+mid+(slice(None),)] = 1
y = self.keras_model.predict([x,dummy])[0][0,...,0]
y0 = self.keras_model.predict([z,dummy])[0][0,...,0]
grid = tuple((np.array(x.shape[1:-1])/np.array(y.shape)).astype(int))
assert grid == self.config.grid
y = zoom(y, grid,order=0)
y0 = zoom(y0,grid,order=0)
ind = np.where(np.abs(y-y0)>0)
return [(m-np.min(i), np.max(i)-m) for (m,i) in zip(mid,ind)]