Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
input_mask = Input(grid_shape, name='dist_mask')
unet_kwargs = {k[len('unet_'):]:v for (k,v) in vars(self.config).items() if k.startswith('unet_')}
# maxpool input image to grid size
pooled = np.array([1,1])
pooled_img = input_img
while tuple(pooled) != tuple(self.config.grid):
pool = 1 + (np.asarray(self.config.grid) > pooled)
pooled *= pool
for _ in range(self.config.unet_n_conv_per_depth):
pooled_img = Conv2D(self.config.unet_n_filter_base, self.config.unet_kernel_size,
padding='same', activation=self.config.unet_activation)(pooled_img)
pooled_img = MaxPooling2D(pool)(pooled_img)
unet = unet_block(**unet_kwargs)(pooled_img)
if self.config.net_conv_after_unet > 0:
unet = Conv2D(self.config.net_conv_after_unet, self.config.unet_kernel_size,
name='features', padding='same', activation=self.config.unet_activation)(unet)
output_prob = Conv2D(1, (1,1), name='prob', padding='same', activation='sigmoid')(unet)
output_dist = Conv2D(self.config.n_rays, (1,1), name='dist', padding='same', activation='linear')(unet)
return Model([input_img,input_mask], [output_prob,output_dist])
prob_out=False,
eps_scale=1e-3):
""" TODO """
if last_activation is None:
raise ValueError("last activation has to be given (e.g. 'sigmoid', 'relu')!")
all((s % 2 == 1 for s in kernel_size)) or _raise(ValueError('kernel size should be odd in all dimensions.'))
channel_axis = -1 if backend_channels_last() else 1
n_dim = len(kernel_size)
conv = Conv2D if n_dim==2 else Conv3D
input = Input(input_shape, name = "input")
unet = unet_block(n_depth, n_filter_base, kernel_size,
activation=activation, dropout=dropout, batch_norm=batch_norm,
n_conv_per_depth=n_conv_per_depth, pool=pool_size)(input)
final = conv(n_channel_out, (1,)*n_dim, activation='linear')(unet)
if residual:
if not (n_channel_out == input_shape[-1] if backend_channels_last() else n_channel_out == input_shape[0]):
raise ValueError("number of input and output channels must be the same for a residual net.")
final = Add()([final, input])
final = Activation(activation=last_activation)(final)
if prob_out:
scale = conv(n_channel_out, (1,)*n_dim, activation='softplus')(unet)
scale = Lambda(lambda x: x+np.float32(eps_scale))(scale)
final = Concatenate(axis=channel_axis)([final,scale])
return Model(inputs=input, outputs=final)
input_mask = Input(grid_shape, name='dist_mask')
unet_kwargs = {k[len('unet_'):]:v for (k,v) in vars(self.config).items() if k.startswith('unet_')}
# maxpool input image to grid size
pooled = np.array([1,1,1])
pooled_img = input_img
while tuple(pooled) != tuple(self.config.grid):
pool = 1 + (np.asarray(self.config.grid) > pooled)
pooled *= pool
for _ in range(self.config.unet_n_conv_per_depth):
pooled_img = Conv3D(self.config.unet_n_filter_base, self.config.unet_kernel_size,
padding="same", activation=self.config.unet_activation)(pooled_img)
pooled_img = MaxPooling3D(pool)(pooled_img)
unet = unet_block(**unet_kwargs)(pooled_img)
if self.config.net_conv_after_unet > 0:
unet = Conv3D(self.config.net_conv_after_unet, self.config.unet_kernel_size,
name='features', padding='same', activation=self.config.unet_activation)(unet)
output_prob = Conv3D(1, (1,1,1), name='prob', padding='same', activation='sigmoid')(unet)
output_dist = Conv3D(self.config.n_rays, (1,1,1), name='dist', padding='same', activation='linear')(unet)
return Model([input_img,input_mask], [output_prob,output_dist])