using System.Collections.Generic; using System.Linq; using Tensorflow.Keras.Engine; using Newtonsoft.Json; using Tensorflow.Train; namespace Tensorflow.Keras.Saving.SavedModel; public abstract class SavedModelSaver { private Trackable _obj; public SavedModelSaver(Trackable obj) { _obj = obj; } public abstract string ObjectIdentifier { get; } public abstract string TrackingMetadata { get; } public abstract IDictionary objects_to_serialize( IDictionary> serialization_cache); public abstract IDictionary functions_to_serialize( IDictionary> serialization_cache); public IDictionary trackable_children(IDictionary> serialization_cache) { if (!KerasSavedModelUtils.ShouldHaveTraces) { return new Dictionary(); } var children = objects_to_serialize(serialization_cache); return children.Concat(functions_to_serialize(serialization_cache).ToDictionary(x => x.Key, x => (Trackable)x.Value)) .ToDictionary(x => x.Key, x => x.Value); } }