使用Keras子类化创建自动编码器模型

叠放

我想创建一个自动编码器子类,作为Keras Model类的子类,我不知道是否有AutoEncoder必要分别创建编码器和解码器并将它们组合成一个新类,或者我需要在同一类中创建编码器和解码器。

这是一类超简单自动编码器的示例:

INPUT_SHAPE = 254
class AutoEncoder(tf.keras.Model):
    def __init__(self):
        super().__init__()
        # Encoder
        self.dense1 = tf.keras.layers.Dense(128, input_shape=(INPUT_SHAPE,), activation='relu')
        self.dense2 = tf.keras.layers.Dense(INPUT_SHAPE, activation='relu')

        #Decoder
        self.dense3 = tf.keras.layers.Dense(128, activation='relu')
        self.dense4 = tf.keras.layers.Dense(3, activation='sigmoid')
    
    def __call__(self, inp, training=False):  
        x = self.dense1(inp)
        x = self.dense2(x)   

        x = self.dense3(x)
        x = self.dense4(x)
        return x

这将是encoder并且decoder是单独的类,我的疑问是如何将两者结合起来?或在这种情况下创建自动编码器的最佳方法是什么。

class Encoder(tf.keras.Model):
    def __init__(self):
        super().__init__()
        self.dense1 = tf.keras.layers.Dense(128, input_shape=(INPUT_SHAPE,), activation='relu')
        self.dense2 = tf.keras.layers.Dense(INPUT_SHAPE, activation='relu')
    
    def __call__(self, inp, training=False):        
        x = self.dense1(x)
        x = self.dense2(x)
        return x
    
class Decoder(tf.keras.Model):
    def __init__(self):
        super().__init__()
        self.dense3 = tf.keras.layers.Dense(128, input_shape=(INPUT_SHAPE,), activation='relu')
        self.dense4 = tf.keras.layers.Dense(3, activation='sigmoid')
        
    def __call__(self, inp, training=False):
        x = self.dense3(x)
        x = self.dense4(x)
        return x
拉格纳

您提供的代码中有2个小错误。好像INPUT_SHAPE没有提供__init__另外,使用callmethod代替__call__

class Encoder(tf.keras.Model):
    def __init__(self, INPUT_SHAPE):
        super(Encoder, self).__init__()
        self.dense1 = tf.keras.layers.Dense(128, input_shape=(INPUT_SHAPE,), activation='relu')
        self.dense2 = tf.keras.layers.Dense(INPUT_SHAPE, activation='relu')
    
    def call(self, inp, training=False):        
        x = self.dense1(x)
        x = self.dense2(x)
        return x
    
class Decoder(tf.keras.Model):
    def __init__(self, INPUT_SHAPE):
        super(Decoder, self).__init__()
        self.dense3 = tf.keras.layers.Dense(128, input_shape=(INPUT_SHAPE,), activation='relu')
        self.dense4 = tf.keras.layers.Dense(3, activation='sigmoid')
        
    def call(self, inp, training=False):
        x = self.dense3(x)
        x = self.dense4(x)
        return x

一旦解决这些问题。您可以使用以下方法定义AE

class AE(tf.keras.Model):
  def __init__(self, INPUT_SHAPE):
    super(AE, self).__init__()
    self.encoder = Encoder(INPUT_SHAPE)
    self.decoder = Decoder(INPUT_SHAPE)

  def call(self, inp):
    out_encoder = self.encoder(inp)
    out_decoder = self.decoder(out_encoder)
    return out_encoder, out_decoder 

是时候采取行动了。让我们实例化此类并检查对象。

INPUT_SHAPE = 10 
model = AE(10) 
model
>>>
<__main__.AE at 0x7f5bb4ef8dd8>

您还可以检查编码器和解码器

model.encoder
model.decoder

这将给<__main__.Encoder at 0x7f5bb4ed2710><__main__.Decoder at 0x7f5bb4ec99e8>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在运行时使用keras从自动编码器模型的隐藏图层中保存要素

来自分类Dev

keras 中的级联模型(自动编码器 + 分类器)

来自分类Dev

Keras自动编码器的输入和输出层不匹配,无法运行模型

来自分类Dev

Keras-组合模型如何在自动编码器上仅提取部分

来自分类Dev

尽管模型摘要清晰,但Keras变分自动编码器仍无法工作?

来自分类Dev

Tensorflow Keras 在自动编码器中分别使用编码器和解码器

来自分类Dev

Keras自动编码器的精度/损耗不变

来自分类Dev

keras变分自动编码器损失函数

来自分类Dev

Keras 中的有状态自动编码器

来自分类Dev

猫图像的 Keras 自动编码器的微调

来自分类Dev

在编码器和解码器 keras 上拆分自动编码器

来自分类Dev

在 Keras 中的数值数据集上使用自动编码器

来自分类Dev

使用RBM的深度自动编码器

来自分类Dev

使用自动编码器的 1 的不兼容形状

来自分类Dev

减少自动编码器的损耗

来自分类Dev

LSTM自动编码器问题

来自分类Dev

自动编码器形状

来自分类Dev

为什么在R中使用keras训练自动编码器时会收到此错误?

来自分类Dev

Keras-火车卷积网络,获取自动编码器输出

来自分类Dev

如何在Keras的LSTM自动编码器中获得Middel层的输出

来自分类Dev

在Keras中训练变型自动编码器会引发“ InvalidArgumentError:形状不兼容”错误

来自分类Dev

Keras flow_from_directory自动编码器培训

来自分类Dev

Keras-火车卷积网络,获取自动编码器输出

来自分类Dev

LSTM 自动编码器的可变长度输入 - Keras

来自分类Dev

从LSTM自动编码器输入分类器数据

来自分类Dev

自动编码器中的捆绑权重

来自分类Dev

用相同的图像训练自动编码器

来自分类Dev

转换自动编码器层级数

来自分类Dev

如何评估用于降维的自动编码器

Related 相关文章

  1. 1

    在运行时使用keras从自动编码器模型的隐藏图层中保存要素

  2. 2

    keras 中的级联模型(自动编码器 + 分类器)

  3. 3

    Keras自动编码器的输入和输出层不匹配,无法运行模型

  4. 4

    Keras-组合模型如何在自动编码器上仅提取部分

  5. 5

    尽管模型摘要清晰,但Keras变分自动编码器仍无法工作?

  6. 6

    Tensorflow Keras 在自动编码器中分别使用编码器和解码器

  7. 7

    Keras自动编码器的精度/损耗不变

  8. 8

    keras变分自动编码器损失函数

  9. 9

    Keras 中的有状态自动编码器

  10. 10

    猫图像的 Keras 自动编码器的微调

  11. 11

    在编码器和解码器 keras 上拆分自动编码器

  12. 12

    在 Keras 中的数值数据集上使用自动编码器

  13. 13

    使用RBM的深度自动编码器

  14. 14

    使用自动编码器的 1 的不兼容形状

  15. 15

    减少自动编码器的损耗

  16. 16

    LSTM自动编码器问题

  17. 17

    自动编码器形状

  18. 18

    为什么在R中使用keras训练自动编码器时会收到此错误?

  19. 19

    Keras-火车卷积网络,获取自动编码器输出

  20. 20

    如何在Keras的LSTM自动编码器中获得Middel层的输出

  21. 21

    在Keras中训练变型自动编码器会引发“ InvalidArgumentError:形状不兼容”错误

  22. 22

    Keras flow_from_directory自动编码器培训

  23. 23

    Keras-火车卷积网络,获取自动编码器输出

  24. 24

    LSTM 自动编码器的可变长度输入 - Keras

  25. 25

    从LSTM自动编码器输入分类器数据

  26. 26

    自动编码器中的捆绑权重

  27. 27

    用相同的图像训练自动编码器

  28. 28

    转换自动编码器层级数

  29. 29

    如何评估用于降维的自动编码器

热门标签

归档