条件变分自动编码器:使用 Keras 将标记为 MNIST 的编码器馈送到编码器

数据挖掘 神经网络 喀拉斯 时间序列 自动编码器 python-3.x
2022-03-07 00:28:23

我正在寻找在 Keras 中使用 MNIST 的 CVAE 代码实现。

我找到了这个 Youtube 视频: https ://youtu.be/8wrLjnQ7EWQ,它执行 VAE,但我不知道如何转换它并使编码器也可以接收标签。

我有:

  • ont-hot 对标签进行编码
  • 标准化图像
  • 重塑他们

现在我想将它提供给编码器。

我有以下代码:

input_img = Input(shape=[input_shape], name='encoder_input')
x = Conv2D(32, 3, padding='same', activation='relu')(input_img)
x = Conv2D(64, 3, padding='same', activation='relu', strides=(2, 2))(x)
x = Conv2D(64, 3, padding='same', activation='relu')(x)
x = Conv2D(64, 3, padding='same', activation='relu')(x)

conv_shape = K.int_shape(x)  # Shape of conv to be provided to decoder

如何修改输入以传递带有图像数据的标签?

PS:此代码仅适用于 keras 1x 兼容性。有兴趣知道如何将其转换为它也可以在 keras 2x 中使用。我是相当新的所以帮助将不胜感激。

1个回答

没关系。您只需展平 cnn 层,然后使用连接功能来连接标签。

input_img = Input(shape=[input_shape], name='encoder_input')
x = Conv2D(32, 3, padding='same', activation='relu')(input_img)
x = Conv2D(64, 3, padding='same', activation='relu', strides=(2, 2))(x)
x = Conv2D(64, 3, padding='same', activation='relu')(x)
x = Conv2D(64, 3, padding='same', activation='relu')(x)
flat = Flatten()(x)

from tensorflow.keras.layers import concatenate
inputs = concatenate([flat, l])

其中l是 one-hot 编码标签