Beispiel #1
0
        /// <summary>
        /// Invoke this hook with a certain parameter registry if optional conditional criteria are satisfied.
        /// </summary>
        /// <param name="registry">The registry containing the required values for this hook's execution.</param>
        /// <param name="resolver">A helper resolver for complex registry entries (automatically cached).</param>
        public override void SubInvoke(IRegistry registry, IRegistryResolver resolver)
        {
            IDictionary <string, INDArray> block    = (IDictionary <string, INDArray>)ParameterRegistry[DataIdentifier];
            IPassNetworkReceiver           receiver = (IPassNetworkReceiver)ParameterRegistry[ReceiverIdentifier];

            INetwork network = resolver.ResolveGetSingle <INetwork>("network.self");

            IDataProvider provider = new DefaultDataProvider();

            provider.SetExternalOutputLink("external_default", (targetsRegistry, layer, targetBlock) => { receiver.ReceivePass((INDArray)targetsRegistry["activations"]); });

            DataUtils.ProvideExternalInputData(provider, network, block);
            network.Run(Operator.Handler, false);
            DataUtils.ProvideExternalOutputData(provider, network, block);
        }
Beispiel #2
0
 /// <summary>
 /// Create a hook with a certain time step and a set of required global registry entries.
 /// </summary>
 public PassNetworkHook(IPassNetworkReceiver receiver, IDictionary <string, INDArray> block, ITimeStep timeStep) : base(timeStep, "network.self")
 {
     ParameterRegistry[DataIdentifier]     = block;
     ParameterRegistry[ReceiverIdentifier] = receiver;
     InvokeInBackground = true;
 }