【神经网络】AutoEncoder自编码器

2024-04-29 06:38

本文主要是介绍【神经网络】AutoEncoder自编码器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.基本功能

自编码器最大的特点是输入与输出的节点数是一致的,其功能并不是进行分类或者是回归预测,而是将原始数据转换为一种特殊的特征表示方式,在训练的过程中,依然采用反向传播算法进行参数优化,目标函数为使输出与输入之间的误差最小化。
基本功能如图,如图所示,普通神经网络是训练类别(或者离散值)与输入之间的映射关系,而AutoEncoder是将input通过encoder进行编码得到code,然后再使用decoder进行解码,得到原始数据相同维度的表示方式reconstruction,进而通过反向传播优化inputrexonstruction之间的误差。
这里写图片描述
到目前为止,只是获取到了一个新的特征向量,因此需要连接其他网络结构实现预测分类等功能。通过训练,这个特征可以在最大程度上表示原始数据。最终我们的模型是AutoEncoder+分类器。如图分别为两种监督训练方式:
这里写图片描述
这里写图片描述
第一张图片表示在训练predictionlabel过程中对整个网络进行参数调节;第二张图片表示在训练过程中仅调节分类器,不修改编码器内部参数。第一种属于End-To-End算法,效果较好。

2.算法实现

(1)导入包

import tflearn.datasets.mnist as mnist
import tflearn
import numpy as np
import matplotlib.pyplot as plt
from tflearn.layers.core import fully_connected, input_data

(2)构建Encoder和Decoder

X, Y, testX, testY = mnist.load_data(one_hot=True)
encoder = input_data(shape=[None, 784])
encoder = fully_connected(encoder, 256)
encoder = fully_connected(encoder, 64)decoder = fully_connected(encoder, 256)
decoder = fully_connected(encoder, 784)net = tflearn.regression(decoder, optimizer='adam', loss='mean_square',learning_rate=0.001, metric=None)model = tflearn.DNN(net)
model.fit(X, X,n_epoch=3, validation_set=(testX, testX),show_metric=True,batch_size=256)

(3)测试Encoder结果

print('\nTest encoding of X[0]: ')
encoding_model = tflearn.DNN(encoder, session=model.session)
print(encoding_model.predict([X[0]]))

通过调用model.fit()的会话实现权重共享。
(4)可视化结果

print('\nVisualizing results after being encoder and decoder')
testX = tflearn.data_utils.shuffle(testX)[0]
encoder_decoder = model.predict(testX)# plt
f, a = plt.subplots(2, 10, figsize=(10, 2))
for i in range(10):temp = [[ii, ii, ii] for ii in list(testX[i])]a[0][i].imshow(np.reshape(temp, (28, 28, 3)))temp = [[ii, ii, ii] for ii in list(encoder_decoder[i])]a[1][i].imshow(np.reshape(temp, (28, 28, 3)))
f.show()
plt.draw()
plt.waitforbuttonpress()

(5)连接分类器
此处以Alexnet为例进行测试,效果一般,主要是理解过程

from tflearn.layers.estimator import regression
from tflearn.layers.conv import conv_2d, max_pool_2d
from tflearn.layers.normalization import local_response_normalization
from tflearn.layers.core import dropout
import tensorflow as tf
tf.reset_default_graph()
codeX = model.predict(X)
codeX = codeX.reshape([-1, 28, 28, 1])network = input_data(shape=[None, 28, 28, 1])
network = conv_2d(network, nb_filter=96, filter_size=8, strides=2, activation='relu')
network = max_pool_2d(network, kernel_size=3, strides=1)
network = local_response_normalization(network)
network = conv_2d(network, nb_filter=256, filter_size=5, strides=1, activation='relu')
network = max_pool_2d(network, kernel_size=3, strides=1)
network = local_response_normalization(network)
network = conv_2d(network, nb_filter=384, filter_size=3, activation='relu')
network = conv_2d(network, nb_filter=384, filter_size=3, activation='relu')
network = conv_2d(network, nb_filter=256, filter_size=3, activation='relu')
network = max_pool_2d(network, kernel_size=3, strides=1)
network = fully_connected(network, 2048, activation='tanh')
network = dropout(network, 0.5)
network = fully_connected(network, 2048, activation='tanh')
network = dropout(network, 0.5)
network = fully_connected(network, 10, activation='softmax')
network = regression(network, optimizer='momentum', loss='categorical_crossentropy', learning_rate=0.001)model_alexnet = tflearn.DNN(network)
model_alexnet.fit(codeX, Y, n_epoch=100, validation_set=0.2, show_metric=True)

参考链接:http://blog.csdn.net/u010555688/article/details/24438311

这篇关于【神经网络】AutoEncoder自编码器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/945354

相关文章

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

机器学习之监督学习(三)神经网络

机器学习之监督学习(三)神经网络基础 0. 文章传送1. 深度学习 Deep Learning深度学习的关键特点深度学习VS传统机器学习 2. 生物神经网络 Biological Neural Network3. 神经网络模型基本结构模块一:TensorFlow搭建神经网络 4. 反向传播梯度下降 Back Propagation Gradient Descent模块二:激活函数 activ

图神经网络框架DGL实现Graph Attention Network (GAT)笔记

参考列表: [1]深入理解图注意力机制 [2]DGL官方学习教程一 ——基础操作&消息传递 [3]Cora数据集介绍+python读取 一、DGL实现GAT分类机器学习论文 程序摘自[1],该程序实现了利用图神经网络框架——DGL,实现图注意网络(GAT)。应用demo为对机器学习论文数据集——Cora,对论文所属类别进行分类。(下图摘自[3]) 1. 程序 Ubuntu:18.04

基于深度学习 卷积神经网络resnext50的中医舌苔分类系统

项目概述 本项目旨在通过深度学习技术,特别是利用卷积神经网络(Convolutional Neural Networks, CNNs)中的ResNeXt50架构,实现对中医舌象图像的自动分类。该系统不仅能够识别不同的舌苔类型,还能够在PyQt5框架下提供一个直观的图形用户界面(GUI),使得医生或患者能够方便地上传舌象照片并获取分析结果。 技术栈 深度学习框架:采用PyTorch或其他

图神经网络(2)预备知识

1. 图的基本概念         对于接触过数据结构和算法的读者来说,图并不是一个陌生的概念。一个图由一些顶点也称为节点和连接这些顶点的边组成。给定一个图G=(V,E),  其 中V={V1,V2,…,Vn}  是一个具有 n 个顶点的集合。 1.1邻接矩阵         我们用邻接矩阵A∈Rn×n表示顶点之间的连接关系。 如果顶点 vi和vj之间有连接,就表示(vi,vj)  组成了

自然语言处理系列六十三》神经网络算法》LSTM长短期记忆神经网络算法

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列六十三神经网络算法》LSTM长短期记忆神经网络算法Seq2Seq端到端神经网络算法 总结 自然语言处理系列六十三 神经网络算法》LSTM长短期记忆神经网络算法 长短期记忆网络(LSTM,Long S

神经网络训练不起来怎么办(零)| General Guidance

摘要:模型性能不理想时,如何判断 Model Bias, Optimization, Overfitting 等问题,并以此着手优化模型。在这个分析过程中,我们可以对Function Set,模型弹性有直观的理解。关键词:模型性能,Model Bias, Optimization, Overfitting。 零,领域背景 如果我们的模型表现较差,那么我们往往需要根据 Training l

稀疏自编码器tensorflow

自编码器是一种无监督机器学习算法,通过计算自编码的输出与原输入的误差,不断调节自编码器的参数,最终训练出模型。自编码器可以用于压缩输入信息,提取有用的输入特征。如,[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]四比特信息可以压缩成两位,[0,0],[1,0],[1,1],[0,1]。此时,自编码器的中间层的神经元个数为2。但是,有时中间隐藏层的神经元

如何将卷积神经网络(CNN)应用于医学图像分析:从分类到分割和检测的实用指南

引言 在现代医疗领域,医学图像已经成为疾病诊断和治疗规划的重要工具。医学图像的类型繁多,包括但不限于X射线、CT(计算机断层扫描)、MRI(磁共振成像)和超声图像。这些图像提供了对身体内部结构的详细视图,有助于医生在进行准确诊断和制定个性化治疗方案时获取关键的信息。 1. 医学图像分析的挑战 医学图像分析面临诸多挑战,其中包括: 图像数据的复杂性:医学图像通常具有高维度和复杂的结构

临床基础两手抓!这个12+神经网络模型太贪了,免疫治疗预测、通路重要性、基因重要性、通路交互作用性全部拿下!

生信碱移 IRnet介绍 用于预测病人免疫治疗反应类型的生物过程嵌入神经网络,提供通路、通路交互、基因重要性的多重可解释性评估。 临床实践中常常遇到许多复杂的问题,常见的两种是: 二分类或多分类:预测患者对治疗有无耐受(二分类)、判断患者的疾病分级(多分类); 连续数值的预测:预测癌症病人的风险、预测患者的白细胞数值水平; 尽管传统的机器学习提供了高效的建模预测与初步的特征重