官术网_书友最值得收藏!

2.3.3 自定義神經網絡層

2.3.1節中使用偽代碼定義機器學習庫中低級API,有了實現的神經網絡基類抽象方法,那么就可以設計更高層次的接口,解決手動管理參數的煩瑣。假設已經有了神經網絡模型抽象方法Cell,構建Conv2D將繼承Cell類,并重構__init__和__call__方法,在__init__方法中初始化訓練參數和輸入參數,在__call__方法中調用低級API實現計算邏輯。使用偽代碼,如代碼2.12所示,通過接口定義描述自定義卷積層的過程。

代碼2.12 自定義神經網絡層

有了上述定義,在使用卷積層時,就不需要創建訓練變量了。假設需要對30×30大小的10個通道的輸入使用3×3的卷積核做卷積,卷積后輸出20個通道,調用方式如代碼2.13所示。

代碼2.13 使用卷積層

在執行過程中,初始化Conv2D時,__setattr__方法會判斷屬性,把屬于Cell類的神經網絡層Conv2D記錄到self._cells中,filters屬于參數(parameter),把參數記錄到self._params中。查看神經網絡層參數使用conv.parameters_and_names;查看神經網絡層列表使用conv.cells_and_names;執行操作使用conv(inputs)。

主站蜘蛛池模板: 望谟县| 武陟县| 佛山市| 龙海市| 宣化县| 盱眙县| 万载县| 郑州市| 阜新市| 灌云县| 建德市| 东丰县| 侯马市| 张掖市| 彭州市| 乐东| 集安市| 革吉县| 米林县| 庆城县| 汕尾市| 璧山县| 冷水江市| 包头市| 会东县| 上林县| 饶阳县| 台山市| 卓资县| 新化县| 临澧县| 清徐县| 平湖市| 和静县| 庆阳市| 伊金霍洛旗| 阳信县| 湖州市| 化隆| 大足县| 西贡区|