我有一個圖層(網絡),它由包含節點(神經元)的圖層組成。我想寫一個過程來以最優雅的方式複製整個圖 - 即在節點或圖層的結構中添加最少或沒有開銷。或者換句話說 - 程序可能很複雜,但複雜性不應該「泄露」到結構中。他們應該不會因爲複製而變得複雜。如何優雅地複製圖形(神經網絡)
我寫C#代碼,到目前爲止,它看起來是這樣的:
- 神經元有更多的領域 - copy_of這是指針,其基地複製的神經元,這是我的 額外的開銷
- 神經元有參數方法克隆()
- 神經元有方法重新連接() - 其從交換「源」神經元(參數)的「目標」的神經元(參數)連接
- 層具有參數方法克隆() - 它只需調用Clone()f或所有神經元
- 網絡具有無參數方法Clone() - 它爲每個層調用Clone(),然後遍歷所有神經元並創建映射neuron => copy_of,然後調用Reconnect交換所有「連線」
我希望我的方法很明確。問題是 - 有沒有更優雅的方法,我特別不喜歡在被複制的情況下在神經元類中保留額外的指針!我想收集數據在一點(網絡的克隆),然後完全處置它(克隆方法不能有一個參數,雖然)。
如果你經常做這種克隆,你可能要考慮使用不可變的數據結構(其中「複製」是O(1)時間和空間)。 – 2010-06-02 21:30:57
這也意味着每個操作都需要克隆整個圖形 - 並且分配內存不是免費的。此外,我不明白如何在這種情況下使數據不可變_使克隆更加優雅。 – greenoldman 2010-06-07 06:51:12