def get_deconv1d(conv1d_layer: Conv1D): W = conv1d_layer.get_weights()[0] # W: kernel_width, kernel_depth, n_filters # Reverse the conv operation W = np.transpose(W, (0, 2, 1)) # Transpose the columns and rows W = W[::-1, :, :] n_filters = W.shape[2] kernel_size = W.shape[0] strides = conv1d_layer.strides padding = conv1d_layer.padding b = np.zeros(n_filters) return DeConv1D(n_filters, kernel_size=kernel_size, strides=strides, padding=padding, kernel_initializer=tf.constant_initializer(W), bias_initializer=tf.constant_initializer(b), trainable=False)
def get_deconv1d_reverse_bias(conv1d_layer: Conv1D): return ReverseBiasLayer(conv1d_layer.get_weights()[1])