You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

base_serialization.cs 1.3 kB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using Tensorflow.Keras.Engine;
  4. using Newtonsoft.Json;
  5. using Tensorflow.Train;
  6. namespace Tensorflow.Keras.Saving.SavedModel;
  7. public abstract class SavedModelSaver
  8. {
  9. private Trackable _obj;
  10. public SavedModelSaver(Trackable obj)
  11. {
  12. _obj = obj;
  13. }
  14. public abstract string ObjectIdentifier { get; }
  15. public abstract string TrackingMetadata { get; }
  16. public abstract IDictionary<string, Trackable> objects_to_serialize(
  17. IDictionary<string, IDictionary<Trackable, ISerializedAttributes>> serialization_cache);
  18. public abstract IDictionary<string, Trackable> functions_to_serialize(
  19. IDictionary<string, IDictionary<Trackable, ISerializedAttributes>> serialization_cache);
  20. public IDictionary<string, Trackable> trackable_children(IDictionary<string, IDictionary<Trackable, ISerializedAttributes>> serialization_cache)
  21. {
  22. if (!KerasSavedModelUtils.ShouldHaveTraces)
  23. {
  24. return new Dictionary<string, Trackable>();
  25. }
  26. var children = objects_to_serialize(serialization_cache);
  27. return children.Concat(functions_to_serialize(serialization_cache).ToDictionary(x => x.Key, x => (Trackable)x.Value))
  28. .ToDictionary(x => x.Key, x => x.Value);
  29. }
  30. }