自编码器、去噪自编码器、卷积去噪自编码器

本文探讨了深度学习中的自编码器家族,包括基本的自编码器、去噪自编码器以及卷积去噪自编码器的实现。通过使用TensorFlow库,详细介绍了各个模型的代码实现,为理解和应用这些技术提供了基础。
摘要由CSDN通过智能技术生成

自编码器、去噪自编码器、卷积去噪自编码器

1.基于tensorflow的自编码器代码

#自编码器
import tensorflow as tf
from tensorflow.keras.datasets import mnist
import matplotlib.pyplot as plt


#加载数据,x_train为(60000张,28,28)的图,y_train是对应的标签,x_test为(10000张,28,28)的图,y_test是对应的标签
(x_train, y_train), (x_test, y_test) = mnist.load_data()

#x_train转化为(60000,784),x_test为(10000,784)
x_train=x_train.reshape(x_train.shape[0], -1)
x_test=x_test.reshape(x_test.shape[0], -1)

#归一化,tf.cast():tensorflow中张量数据类型转换,如下是将图片转化为float32类型
x_train=tf.cast(x_train,tf.float32)/255
x_test=tf.cast(x_test,tf.float32)/255


input_size=784
hidden_size=32
output_size=784


input_dim=tf.keras.layers.Input(shape=(input_size,))

#encode
#Dense全连接层,把input_dim传入这个全连接层
en=tf.keras.layers.Dense(hidden_size, activation='relu')(input_dim)

#decode
de=tf.keras.layers.Dense(output_size,activation='sigmoid')(en)

#模型
model=tf.keras.Model(inputs=input_dim,outputs=de)

#显示模型信息
model.summary()

#画模型图
tf.keras.utils.plot_model(model,show_shapes=True)


#告知训练时用的优化器optimizer、损失函数loss、准确率评测标准metrics
model.compile(optimizer='adam',loss='mse')

#训练:epochs训练轮次,batch_size批次大小即多少张一起训练,shuffle=True指打乱进行训练,validation_data验证集
model.fit(x_train,x_train,epochs=50,batch_size=256,shuffle=True,validation_data=(x_test,x_test))

#model的层
model.layers

#获得encoder模型(把一张图像压缩成一个向量)
encode=tf.keras.Model(inputs=input_dim,outputs=en)

#获得decoder模型(把一个向量还原回图像)
input_decoder=tf.keras.layers.Input(shape=(hidden_size,))
output_decoder=model.layers[-1](input_decoder)#model.layers[-1]调用model模型的最后一层
decode=tf.keras.Model(inputs=input_decoder, outputs=output_decoder)


#调用encoder模型把测试集数据压缩为32维向量
#encode_test=encode(x_test)会得到一个tensor,而用predict可以返回一个numpy数据(10000,32)
encode_test=
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值