コード例 #1
0
        public override void Duplicate(Layer cloneLayer)
        {
            if (cloneLayer.LayerType != LayerType.BPTTLayer)
            {
                throw new Exception();
            }
            else if (((BPTTLayer)cloneLayer).Tick != Tick)
            {
                throw new Exception();
            }
            else
            {
                base.Duplicate(cloneLayer);

                for (int hideLayerIndex = 0; hideLayerIndex < HideLayerList.Count; hideLayerIndex++)
                {
                    ((BPTTLayer)cloneLayer).HideLayerList[hideLayerIndex].LayerStroageMatrix    = HideLayerList[hideLayerIndex].LayerStroageMatrix.Clone();
                    ((BPTTLayer)cloneLayer).HideLayerList[hideLayerIndex].LayerActivationMatrix = HideLayerList[hideLayerIndex].LayerActivationMatrix.Clone();
                    ((BPTTLayer)cloneLayer).HideLayerList[hideLayerIndex].LayerErrorMatrix      = HideLayerList[hideLayerIndex].LayerErrorMatrix.Clone();
                    ((BPTTLayer)cloneLayer).HideLayerList[hideLayerIndex].BiasMatrix            = HideLayerList[hideLayerIndex].BiasMatrix.Clone();
                    ((BPTTLayer)cloneLayer).HideLayerList[hideLayerIndex].InterConnectionMatrix = HideLayerList[hideLayerIndex].InterConnectionMatrix.Clone();
                }
                for (int hideConnectionIndex = 0; hideConnectionIndex < HideConnectionList.Count; hideConnectionIndex++)
                {
                    ((BPTTLayer)cloneLayer).HideConnectionList[hideConnectionIndex].WeightMatrix = HideConnectionList[hideConnectionIndex].WeightMatrix;
                }
                ((BPTTLayer)cloneLayer).BaseHideWeightMatrix = BaseHideWeightMatrix.Clone();
                ((BPTTLayer)cloneLayer).BaseHideBiasMatrix   = BaseHideBiasMatrix.Clone();
            }
        }
コード例 #2
0
 public override void Initialize(LayerState layerState, double damagedSD, int rowCount)
 {
     base.Initialize(layerState, damagedSD, rowCount);
     CurrentTick   = 0;
     HideLayerList = new List <Layer>();
     for (int layerIndex = 0; layerIndex <= Tick; layerIndex++)
     {
         Layer newLayer = new Layer(random, Name + "-Hide" + layerIndex, UnitCount, 0, 0);
         newLayer.BiasMatrix = (Matrix <double>)BaseHideBiasMatrix.Clone();
         newLayer.Initialize(layerState, damagedSD, rowCount);
         HideLayerList.Add(newLayer);
     }
     HideConnectionList = new List <Connection>();
     for (int connectionIndex = 0; connectionIndex < Tick; connectionIndex++)
     {
         Connection newConnection = new Connection(random, Name + "-Hide" + connectionIndex, HideLayerList[connectionIndex], HideLayerList[connectionIndex + 1], 0);
         newConnection.WeightMatrix = (Matrix <double>)BaseHideWeightMatrix.Clone();
         newConnection.Initialize(ConnectionState.On, 0);
         HideConnectionList.Add(newConnection);
     }
 }
コード例 #3
0
 public override void Initialize(LayerState layerState, double damagedSD, int rowCount)
 {
     base.Initialize(layerState, damagedSD, rowCount);
     CurrentTick   = 0;
     HideLayerList = new List <Layer>();
     for (int layerIndex = 0; layerIndex <= Tick; layerIndex++)
     {
         Layer newLayer = new Layer(random, Name + "-Hide" + layerIndex, UnitCount, 0, 0);
         newLayer.BiasMatrix = (Matrix <double>)BaseHideBiasMatrix.Clone();
         newLayer.Initialize(layerState, damagedSD, rowCount);
         HideLayerList.Add(newLayer);
     }
     HideBundleList = new List <Bundle>();
     for (int bundleIndex = 0; bundleIndex < Tick; bundleIndex++)
     {
         Bundle newBundle = new Bundle(random, Name + "-Hide" + bundleIndex, HideLayerList[bundleIndex], HideLayerList[bundleIndex + 1], 0);
         newBundle.WeightMatrix = (Matrix <double>)BaseHideWeightMatrix.Clone();
         newBundle.Initialize(BundleState.On, 0);
         HideBundleList.Add(newBundle);
     }
 }