J'utilise ces thesesources pour construire un autoencoder convolutif en tensorflow. Je comprends que j'ai besoin de tamponner mon image d'entrée avec des zéros, afin d'obtenir une sortie du décodeur égale à l'entrée d'origine. L'auteur donne un exemple pour le cas simple d'un noyau carré et des valeurs égales pour les foulées (verticales et horrizontal). J'ai besoin de généraliser cette fonction de remplissage pour mon entrée, mais je n'arrive pas à obtenir la forme correcte de mon tenseur. Ma fonction à ce jour est:Trouver la quantité de zéros pour remplir l'entrée d'une couche convolutionnelle
def _pad(self, input_x, filter_height, filter_width):
"""
pads input_x with the right amount of zeros.
Args:
input_x: 4-D tensor, [batch_side, widht, height, depth]
filter_side: used to dynamically determine the padding amount
Returns:
input_x padded
"""
# calculate the padding amount for each side
top_bottom_padding = filter_height - 1
left_right_padding = filter_width - 1
# pad the input on top, bottom, left, right, with amount zeros
return tf.pad(input_x,
[[0, 0], [top_bottom_padding, top_bottom_padding], [left_right_padding, left_right_padding], [0, 0]])
Cela me donne
Shape of input: (10, 161, 1800, 1)
Shape of padded input: (10, 187, 1826, 1)
Shape of encoder output: (10, 187, 913, 15)
Shape of decoder output: (10, 187, 457, 15)
pour
num_outputs=15, kernel_size=14, stride=[1,2]
Toute idée sur ce que je fais mal?