/** @copydoc Layer::dispose */ protected override void dispose() { foreach (PoolingLayer <T> layer in m_rgPoolingLayers) { layer.Dispose(); } m_rgPoolingLayers.Clear(); if (m_colBlobSplitTopVec != null) { m_colBlobSplitTopVec.Dispose(); m_colBlobSplitTopVec = null; } if (m_split_layer != null) { m_split_layer.Dispose(); m_split_layer = null; } if (m_colBlobPoolingOutputs != null) { m_colBlobPoolingOutputs.Dispose(); m_colBlobPoolingOutputs = null; } if (m_colBlobFlattenOutputs != null) { m_colBlobFlattenOutputs.Dispose(); m_colBlobFlattenOutputs = null; } foreach (FlattenLayer <T> layer in m_rgFlattenLayers) { layer.Dispose(); } m_rgFlattenLayers.Clear(); m_rgPoolingBottomVec.Clear(); m_rgPoolingTopVecs.Clear(); m_rgFlattenLayerTopVecs.Clear(); base.dispose(); }
/** @copydoc Layer::dispose */ protected override void dispose() { m_blobScale.Dispose(); m_blobSquareInput.Dispose(); m_blobSquareOutput.Dispose(); m_blobPoolOutput.Dispose(); m_blobPowerOutput.Dispose(); m_blobProductInput.Dispose(); if (m_splitLayer != null) { m_splitLayer.Dispose(); m_splitLayer = null; } if (m_squareLayer != null) { m_squareLayer.Dispose(); m_squareLayer = null; } if (m_poolLayer != null) { m_poolLayer.Dispose(); m_poolLayer = null; } if (m_powerLayer != null) { m_powerLayer.Dispose(); m_powerLayer = null; } if (m_powerLayer != null) { m_productLayer.Dispose(); m_powerLayer = null; } if (m_hNormDesc != 0) { m_cuda.FreeLRNDesc(m_hNormDesc); m_hNormDesc = 0; } if (m_hBottomDesc != 0) { m_cuda.FreeTensorDesc(m_hBottomDesc); m_hBottomDesc = 0; } if (m_hTopDesc != 0) { m_cuda.FreeTensorDesc(m_hTopDesc); m_hTopDesc = 0; } if (m_hCuDnn != 0) { m_cuda.FreeCuDNN(m_hCuDnn); m_hCuDnn = 0; } if (m_hTempData1 != 0) { m_cuda.FreeMemory(m_hTempData1); m_hTempData1 = 0; } if (m_hTempData2 != 0) { m_cuda.FreeMemory(m_hTempData2); m_hTempData2 = 0; } base.dispose(); }