如何拆分卷积自动编码器?

2023-11-26

我已经编译了一个自动编码器(完整代码如下),在训练它之后,我想将其分成两个单独的模型:编码器(层 e1...编码)和解码器(所有其他层),在其中提供手动修改的图像已被解码器编码。我已经成功创建了一个编码器作为一个单独的模型:

encoder = Model(input_img, autoencoder.layers[6].output)

但是当我尝试制作解码器时,同样的方法失败了:

encoded_input = Input(shape=(4,4,8))
decoder = Model(input_img, decoded)

这是我的完整代码:

from keras.layers import Input, Dense, Conv2D, MaxPooling2D, UpSampling2D
from keras.models import Model
from keras import backend as K
from keras.models import load_model

input_img = Input(shape=(28, 28, 1))  # adapt this if using channels_first` image data format

e1 = Conv2D(16, (3, 3), activation='relu', padding='same')(input_img)
e2 = MaxPooling2D((2, 2), padding='same')(e1)
e3 = Conv2D(8, (3, 3), activation='relu', padding='same')(e2)
e4 = MaxPooling2D((2, 2), padding='same')(e3)
e5 = Conv2D(8, (3, 3), activation='relu', padding='same')(e4)
encoded = MaxPooling2D((2, 2), padding='same')(e5)

# at this point the representation is (4, 4, 8) i.e. 128-dimensional

d1 = Conv2D(8, (3, 3), activation='relu', padding='same')(encoded)
d2 = UpSampling2D((2, 2))(d1)
d3 = Conv2D(8, (3, 3), activation='relu', padding='same')(d2)
d4 = UpSampling2D((2, 2))(d3)
d5 = Conv2D(16, (3, 3), activation='relu')(d4)
d6 = UpSampling2D((2, 2))(d5)
decoded = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(d6)

autoencoder = Model(input_img, decoded)
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')

请帮忙。

EDIT顺便说一句,我可以使用由密集层组成的自动编码器来做到这一点:

from keras.layers import Input, Dense
from keras.models import Model

# this is the size of our encoded representations
encoding_dim = 32  # 32 floats -> compression of factor 24.5, assuming     the input is 784 floats

# this is our input placeholder
input_img = Input(shape=(784,))

# "encoded" is the encoded representation of the input
encoded = Dense(encoding_dim, activation='relu')(input_img)

# "decoded" is the lossy reconstruction of the input
decoded = Dense(784, activation='sigmoid')(encoded)

# this model maps an input to its reconstruction
autoencoder = Model(input_img, decoded)

# this model maps an input to its encoded representation
encoder = Model(input_img, encoded)

# create a placeholder for an encoded (32-dimensional) input
encoded_input = Input(shape=(encoding_dim,))

# retrieve the last layer of the autoencoder model
decoder_layer = autoencoder.layers[-1]

# create the decoder model
decoder = Model(encoded_input, decoder_layer(encoded_input))

好吧,几个小时后我想通了。对我有用的是: 1. 为编码器创建单独的模型 2. 为解码器创建单独的模型 3. 创建自动编码器的通用模型:

autoencoder = Model(input, Decoder()(Encoder(input))

完整的工作代码如下:

def Encoder():
    input_img = Input(shape=(28, 28, 1))  # adapt this if using `channels_first` image data format   
    e1 = Conv2D(16, (3, 3), activation='relu', padding='same')(input_img)
    e2 = MaxPooling2D((2, 2), padding='same')(e1)
    e3 = Conv2D(8, (3, 3), activation='relu', padding='same')(e2)
    e4 = MaxPooling2D((2, 2), padding='same')(e3)
    e5 = Conv2D(8, (3, 3), activation='relu', padding='same')(e4)
    e6 = MaxPooling2D((2, 2), padding='same')(e5)
    return Model(input_img, e6)


def Decoder():
    input_img = Input(shape=(4, 4, 8))  # adapt this if using `channels_first` image data format   
    d1 = Conv2D(8, (3, 3), activation='relu', padding='same')(input_img)
    d2 = UpSampling2D((2, 2))(d1)
    d3 = Conv2D(8, (3, 3), activation='relu', padding='same')(d2)
    d4 = UpSampling2D((2, 2))(d3)
    d5 = Conv2D(16, (3, 3), activation='relu')(d4)
    d6 = UpSampling2D((2, 2))(d5)
    d7 = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(d6)
    return Model(input_img, d7)


# define input to the model:
x = Input(shape=(28, 28, 1))

# make the model:
autoencoder = Model(x, Decoder()(Encoder()(x)))

# compile the model:
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何拆分卷积自动编码器? 的相关文章

随机推荐

  • 使用 R 从 Excel 工作表读取时如何检测时间

    问题是 当我使用 R 从 excel 工作表读取数据时read xlsx from openxlsx包 该TIME列转换为分数 这是一个例子 dfin lt DATE TIME 15 02 2015 8 00 AM 22 01 2014 1
  • 通过与数组进行模式匹配的多重赋值不适用于大写值

    看完之后这个答案我尝试自己使用这个不错的功能 并发现当我这样做时它没问题 scala gt val Array a b n XXX YYY ZZZ split a java lang String XXX b java lang Strin
  • 如何将 div 的内容作为 POST 参数发送?

    我有这个代码 div p p div 我可以获取 div 的内容并将它们作为 POST 参数发送 以便在 PHP 中使用它们吗 如果我可以使用 onchange this form submit 那就太好了 Thanks 无法发布内容div
  • VBA 另存为 PDF,文件名作为单元格值

    我正在尝试将四张纸保存到一个 PDF 中 下面的代码是我到目前为止所拥有的 当我在文件名中使用 ActiveSheet Name 命令时 它可以工作 但是当我将其更改为动态单元格的范围时 它不再工作并出错 任何帮助 将不胜感激 Sheets
  • Imagick 和 phmagick 出现问题:Postscript 委托失败/没有这样的文件或目录

    我正在使用 imagick 3 0 1 和 phmagick http www francodacosta com phMagick download 无论如何 当我尝试将 PDF 转换为 JPEG 时 两者都会出现同样的错误 例如 Pos
  • 特定 div 宽度上类似媒体查询的行为

    我正在构建一个编辑器 其中帖子的内容加载在 div 中 并且 jQuery 选择器允许我内联编辑内容 当我试图为模板的样式添加一些响应能力时 我遇到了一些障碍 在我的模板样式表中 我使用预览区域的特定 ID 来指定样式应应用的位置 我将相同
  • 如何在 Symfony2/Twig 模板中包含原始 HTML 文件?

    我正在 Symfony2 中开发一个项目 我有几小段 html 需要包含在我的主要视图之一中 根据 Twig 官方文档 我应该能够简单地使用 include filename html 但在 Symfony 中 除非文件名以 html tw
  • 使用 C# 进行高质量 JPEG 压缩

    我正在使用 C 并希望使用 JPEG 格式保存图像 然而 NET 降低了图像的质量 并以不够压缩的方式保存图像 我想以原始质量和大小保存文件 我正在使用以下代码 但压缩和质量与原始代码不同 Bitmap bm Bitmap Image Fr
  • 如何使用指定额外功能的轮子进行 pip 安装?

    我有一个包含附加功能的软件包 通常可以使用以下命令进行安装 pip install package extras 不过 我也可以通过wheels安装相同的包 指定一些wheel URL 如下所示 pip install package ur
  • 包含文件时 Node.js 上的引用错误

    我是新来的node js 我有两个文件 他们是index js and db js my index js is var connection require db js device new Device id 93 name test1
  • LINQ LEFT JOIN where 子句不起作用

    我需要返回所有事件的列表以及用户可能拥有的事件的任何回复 但是 无论我传递的用户名如何 它都会返回每个 rsvp 我的 linq 查询 gt return from events in this context Context Events
  • 防止 Android chrome 闲置/自动锁定/睡眠手机?

    我需要在网站上执行一些功能来禁用空闲 睡眠电话 有人尝试在安卓手机上做这个吗 有什么可能吗 我们强烈不鼓励开发人员这样做 然而这是可能的 您只需在页面上播放视频即可 设备不会进入睡眠状态 这意味着您可以将单帧视频设置为自动循环和播放 需要用
  • Socket.IO 连接无限循环

    Socket IO 在连接上产生无限循环 这很奇怪 直到现在才发生过 我不知道出了什么问题 我尝试重建包 从旧源复制一些代码 得到相同的结果 io on connection function socket console log some
  • 在模块中调用 UserForm_Initialize()

    我怎样才能打电话UserForm Initialize in a Module而不是 UserForm 代码对象 从模块 UserFormName UserForm Initialize 只需确保在您的用户表单中 像这样更新子项 Publi
  • PhoneGap - 与 Android 上的浏览​​器相比性能较差

    我使用jquery mobile 和phonegap 开发了一个android 应用程序 我通过 USB 将应用程序部署到我的设备上 该应用程序的性能非常糟糕 尤其是在滚动较长列表时 奇怪的是 如果我打开手机上的浏览器并直接访问index
  • 为什么 regasm 会警告我不要用响亮的名字签约?

    如果我想让 NET 程序集可用作 COM 服务器 我必须添加一组属性 然后使用regasm将其注册为 COM 服务器 如果程序集未使用强名称签名regasm当运行时 codebase键显示一个RA0000警告说大会可能会干扰同一台计算机上的
  • 为什么 }!{ 在 JavaScript 控制台中会导致 False?

    如果你把 在 Chrome 的 JavaScript 控制台中 结果你会得到false 为什么我们没有收到错误消息 出现此行为的原因是 Chrome 会用另一段代码包装您在控制台中输入的任何内容 它包装的代码 在撰写本文时 如下 with
  • Apache Cordova 和 PhoneGap 之间有什么区别?

    你好 我需要开发一个简单的应用程序 它是混合的 在 android 的 kitkat 版本中运行 由于 PhoneGap 3 3 可以实现 所以我一直在尝试安装它 但我对安装过程真的很困惑 首先我在我的windows 7 32位系统中安装了
  • 如何使我的 ASP.NET 服务器控件将嵌入的代码块作为属性值?

    我有一个具有 Title 属性的自定义服务器控件 使用该控件时 我想在 aspx 页面中设置标题的值 如下所示
  • 如何拆分卷积自动编码器?

    我已经编译了一个自动编码器 完整代码如下 在训练它之后 我想将其分成两个单独的模型 编码器 层 e1 编码 和解码器 所有其他层 在其中提供手动修改的图像已被解码器编码 我已经成功创建了一个编码器作为一个单独的模型 encoder Mode