如何使用 keras/tensorflow 构建无监督 CNN 模型?

2024-06-22

我正在尝试为图像到图像转换应用程序构建 CNN,模型的输入是图像,输出是置信图。训练期间没有标记的置信度作为基本事实,但设计了损失函数来引导模型获得正确的输出。

我在用 keras 构建神经网络时遇到困难,因为 model.fit() 函数需要训练数据和标记数据(地面实况数据)。

所以我的问题是,有没有办法用 keras 或 tensorflow 构建无监督的 CNN?如果是这样,我应该做什么来构建一个?有应用示例或者可以参考的吗?

提前致谢!


您可以使用自动编码器通过 keras 构建无监督 CNN。 Fashion MNIST 数据的代码如下所示:

# Python ≥3.5 is required
import sys
assert sys.version_info >= (3, 5)

# Scikit-Learn ≥0.20 is required
import sklearn
assert sklearn.__version__ >= "0.20"

# TensorFlow ≥2.0-preview is required
import tensorflow as tf
from tensorflow import keras
assert tf.__version__ >= "2.0"

# Common imports
import numpy as np
import os

(X_train_full, y_train_full), (X_test, y_test) = keras.datasets.fashion_mnist.load_data()
X_train_full = X_train_full.astype(np.float32) / 255
X_test = X_test.astype(np.float32) / 255
X_train, X_valid = X_train_full[:-5000], X_train_full[-5000:]
y_train, y_valid = y_train_full[:-5000], y_train_full[-5000:]

def rounded_accuracy(y_true, y_pred):
    return keras.metrics.binary_accuracy(tf.round(y_true), tf.round(y_pred))

tf.random.set_seed(42)
np.random.seed(42)

conv_encoder = keras.models.Sequential([
    keras.layers.Reshape([28, 28, 1], input_shape=[28, 28]),
    keras.layers.Conv2D(16, kernel_size=3, padding="SAME", activation="selu"),
    keras.layers.MaxPool2D(pool_size=2),
    keras.layers.Conv2D(32, kernel_size=3, padding="SAME", activation="selu"),
    keras.layers.MaxPool2D(pool_size=2),
    keras.layers.Conv2D(64, kernel_size=3, padding="SAME", activation="selu"),
    keras.layers.MaxPool2D(pool_size=2)
])
conv_decoder = keras.models.Sequential([
    keras.layers.Conv2DTranspose(32, kernel_size=3, strides=2, padding="VALID", activation="selu",
                                 input_shape=[3, 3, 64]),
    keras.layers.Conv2DTranspose(16, kernel_size=3, strides=2, padding="SAME", activation="selu"),
    keras.layers.Conv2DTranspose(1, kernel_size=3, strides=2, padding="SAME", activation="sigmoid"),
    keras.layers.Reshape([28, 28])
])
conv_ae = keras.models.Sequential([conv_encoder, conv_decoder])

conv_ae.compile(loss="binary_crossentropy", optimizer=keras.optimizers.SGD(lr=1.0),
                metrics=[rounded_accuracy])
history = conv_ae.fit(X_train, X_train, epochs=5,
                      validation_data=[X_valid, X_valid])

conv_encoder.summary()
conv_decoder.summary()

您可以参考这个链接 https://github.com/ageron/handson-ml2/blob/master/17_autoencoders_and_gans.ipynb了解更多信息。

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

如何使用 keras/tensorflow 构建无监督 CNN 模型? 的相关文章

随机推荐

  • 如何将atan2()与其他Radian角度系统结合使用

    我在 JavaScript 中遇到了这个问题 但这个问题也适用于许多其他语言 环境 我想让一个对象朝着另一个对象的位置旋转 我使用 atan2 obj1 dy obj1 dx obj2 getRotation 检查第二个对象在给定时间是否应
  • 未提示下载 CSV 文件

    我在 WordPress 中创建了一个自定义解决方案 它将生成一个 CSV 文件 通过单击直接链接到该文件的简单超链接即可下载 而不是提示将文件下载到计算机 CSV 在浏览器窗口中打开 FWIW 我在 Media Temple 上使用 Wo
  • iText Pdf 页面字节大小

    我有一个业务需求 要求我将 pdf 拆分为多个文档 假设我有一个 100MB 的 pdf 为了简单起见 我需要将其分成多个不大于 10MB 的 pdf 我正在使用 iText 我要获取原始pdf 并循环浏览页面 但是如何确定每个页面的文件大
  • 为什么外部类不能扩展内部类?

    为什么我不能这样做 是否有解决方法来完成此操作 package myPackage public class A public class B package myPackage import myPackage A B public cl
  • Mono.Addin 实现不检索插件

    我正在使用 Mono Addins 框架 C 和 Visual Studio 2010 编写一个可扩展的应用程序 我的应用程序的结构如下 项目1 namespace Plugins TypeExtensionPoint public int
  • 解析节点的 CSS 属性

    也许我的 google fu 今天让我失望了 但我还没有找到一种方法来解析节点的任意属性以获得样式属性 例如 我希望能够询问节点 fx fill 的值是多少 如果有 一个简单的应用程序示例 我想为图表构建自定义图例 为此 我必须向渲染节点询
  • Django 访问 OneToOneField

    做了一个扩展用户的视图 class Client models Model user models OneToOneField User related name user def unicode self return s self us
  • Javascript 作为一种函数式语言

    我正在寻求掌握函数式编程概念 我多年来一直在 Web 应用程序中使用 Javascript 进行客户端脚本编写 除了使用原型之外 它都是简单的 DOM 操作 输入验证等 最近 我有经常阅读 http eloquentjavascript n
  • 矩形上的文本会消除矩形的悬停效果

    我有几个具有悬停效果的 svg 矩形 当鼠标悬停在矩形上时 矩形的背景颜色会发生变化 悬停效果通过css设置 myclass hover fill rgb 255 128 0 除此之外 文本放置在每个矩形上方 一对文本和矩形定义一个组
  • 如何检测linux机器上是否安装了tomcat和ant

    我正在尝试安装Tomcat and Ant在我的 Linux 机器上 但在安装它们之前我只需要检查它们是否已经安装 关于Tomcat 我用谷歌搜索了很多 并在我的机器上的以下目录中搜索了 tomcat usr local opt usr s
  • 使用 R 中的 arules 包进行重复交易的关联分析

    我想创建一个篮子格式的交易对象 我可以随时调用它进行分析 该数据包含包含 1001 笔交易的逗号分隔项目 前 10 笔交易如下所示 hering corned b olives ham turkey bourbon ice crea bag
  • 高速公路无法导入名称错误

    我已经使用安装了twisted和Autobahn websocket pip install twisted pip install autobahn 但是当我从高速公路导入任何工厂时 我收到无法导入名称错误 gt gt gt from t
  • 查找top-k元素的平均时间复杂度

    考虑在一组 N 个独立且同分布的浮点值中查找前 k 个元素的任务 通过使用优先级队列 堆 我们可以对所有 N 个元素进行一次迭代 并通过以下操作维护一个 top k 集合 如果元素 x 比堆头 更差 丢弃 x 复杂度 O 1 如果元素 x
  • make - 在同一个 eval 调用中定义多个变量

    我想用make s eval函数在一个内部定义多个 动态命名的 变量foreach 但我无法得到eval来做这项工作 我尝试过这样的事情 eval var1 val1 var2 val2 它不起作用 var1被定义为val1 var2 va
  • Rails 博客引擎 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 寻找一个支持文章管理的简单博客引擎 我有独立的 Rails3 2x 应用程序和身份验证系统 我必须为网
  • 如何检索带有元数据标记的函数

    看下面的代码片段 import dart mirrors class meta final String data const meta this data meta Tag doSomething gt print You have to
  • 如何过滤视觉选择?

    假设我们有一些不错的文本 Hello world 我们选择world在视觉模式下 然后我们可以使用像这样的闪亮命令来过滤视觉选择 lt gt echo foobar 但是 这会将整行替换为foobar而不仅仅是world 这是为什么 我们该
  • Android NDK Clang 编译器 (r16b) 的 FFMPEG 源编译失败,并出现错误“clang 编译器不支持 '-mcpu=arm'”

    使用 Android NDK Clang 编译器 r16b 编译 FFMPEG 源时 出现编译器错误 对于以下配置 configure prefix home prasaathviki Desktop ffmpeg bin android
  • WireMock:存根 - 如何获取对象“testClient”?

    我想测试http请求 响应 所以我使用WireMock 我想对特定请求进行存根响应 这里的代码 public class WireMockPersons Rule public WireMockRule wireMockRule new W
  • 如何使用 keras/tensorflow 构建无监督 CNN 模型?

    我正在尝试为图像到图像转换应用程序构建 CNN 模型的输入是图像 输出是置信图 训练期间没有标记的置信度作为基本事实 但设计了损失函数来引导模型获得正确的输出 我在用 keras 构建神经网络时遇到困难 因为 model fit 函数需要训