无法在 Keras 中将 [ 0 1 2 ... 63] 序列化为 JSON 以解决 DL 问题

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

我正在尝试使用 Keras 创建我的神经网络,但是一旦我尝试将模型保存为“.h5”文件就会出现问题。我正在使用 keras

问题如下:

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'>.

与问题相关的class是: PatchEncoder_Class

问题来自 tf.range,这是一个 EagerTensor。你应该使用 self.positions.numpy()。这是一个例子:

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')