Source code for chainer.serializer

import abc

import six


@six.add_metaclass(abc.ABCMeta)
[docs]class AbstractSerializer(object): """Abstract base class of all serializers and deserializers.""" @abc.abstractmethod
[docs] def __getitem__(self, key): """Gets a child serializer. This operator creates a _child_ serializer represented by the given key. Args: key (str): Name of the child serializer. """ raise NotImplementedError
@abc.abstractmethod
[docs] def __call__(self, key, value): """Serializes or deserializes a value by given name. This operator saves or loads a value by given name. If this is a serializer, then the value is simply saved at the key. Note that some type information might be missed depending on the implementation (and the target file format). If this is a deserializer, then the value is loaded by the key. The deserialization differently works on scalars and arrays. For scalars, the ``value`` argument is used just for determining the type of restored value to be converted, and the converted value is returned. For arrays, the restored elements are directly copied into the ``value`` argument. String values are treated like scalars. If the ``value`` argument is ``None``, the type of the restored value will typically be a numpy array but can depend on the particular subclass implementation. Args: key (str): Name of the serialization entry. value (scalar, array, None, or str): Object to be (de)serialized. ``None`` is only supported by deserializers. Returns: Serialized or deserialized value. """ raise NotImplementedError
[docs]class Serializer(AbstractSerializer): """Base class of all serializers."""
[docs] def save(self, obj): """Saves an object by this serializer. This is equivalent to ``obj.serialize(self)``. Args: obj: Target object to be serialized. """ obj.serialize(self)
[docs]class Deserializer(AbstractSerializer): """Base class of all deserializers."""
[docs] def load(self, obj): """Loads an object from this deserializer. This is equivalent to ``obj.serialize(self)``. Args: obj: Target object to be serialized. """ obj.serialize(self)