keras自定義padding大小


1、keras卷積操作中border_mode的實現

def conv_output_length(input_length, filter_size, border_mode, stride):
    if input_length is None:
        return None
    assert border_mode in {'same', 'valid'}
    if border_mode == 'same':
        output_length = input_length
    elif border_mode == 'valid':
        output_length = input_length - filter_size + 1
    return (output_length + stride - 1) // stride

總結:如果卷積的方式選擇為same,那么卷積操作的輸入和輸出尺寸會保持一致。如果選擇valid,那卷積過后,尺寸會變小。

 

2.卷積的操作中,如果使用same,或valid這種模式,有時候會不靈活。必要的時候,需要我們自己去進行補零操作,慶幸的是keras的補零操作是非常靈活的。

keras.layers.convolutional.ZeroPadding2D(padding=(1, 1), dim_ordering='default')

說明:這是keras中的補零操作,下面舉2個例子。
padding= (1,0),會在行的最前和最后都增加一行0。比方說,原來的尺寸為(None,20,11,1),padding之后就會變成(None,22,11,1).

padding= (1,1),會在行和列的最前和最后都增加一行0。比方說,原來的尺寸為(None,20,11,1),padding之后就會變成(None,22,13,1).

說明:在復現某個網絡的過程中,作者使用的是寬卷積,也即長度為N,濾波器的大小為w,那么卷積之后的結果為N+W-1。這個跟數字信號處理中的卷積操作是一致的。這個就沒辦法用keras的API,所以直接使用padding就可以了。

 

摘自:keras卷積補零相關的border_mode的選擇以及padding的操作


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM