Home > Net >  Unable to serialize [ 0 1 2 ... 63] to JSON in Keras for DL issues
Unable to serialize [ 0 1 2 ... 63] to JSON in Keras for DL issues

Time:04-22

I am trying to create my Neural Network, using Keras, but there are problems once i try to save the model as a ".h5" file. I am using keras

The problem is the following:

TypeError: Unable to serialize [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63] to JSON. Unrecognized type <class 'tensorflow.python.framework.ops.EagerTensor'>.

The class related to the problem is: PatchEncoder_Class

CodePudding user response:

The problem is coming from tf.range, which is an EagerTensor. You should use self.positions.numpy(). Here is an example:

import tensorflow as tf

class SomeLayer(tf.keras.layers.Dense):
    def __init__(self, units, **kwargs):
        super().__init__(units=units, **kwargs)
        self.positions = tf.range(5)

    def get_config(self):
        config = super().get_config()
        config.update({"positions": self.positions.numpy()})
        return config

sl = SomeLayer(5)
inputs = tf.keras.layers.Input((1,))
outputs = sl(inputs)
model = tf.keras.Model(inputs, outputs)
model.save('model.h5')
  • Related