TensorFlow实现自编码器及多层感知机

本文详细介绍了TensorFlow实现自编码器和多层感知机的方法。自编码器部分阐述了其基本原理、四种类型的自编码器、处理技巧及代码实现。多层感知机部分讲解了基本原理、包含dropout、ReLU激活函数和Adagrad的技巧,以及相关TensorFlow代码和常用操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、自编码器

(1)基本原理

自编码器(Autoencoder)是一种旨在将它们的输入复制到的输出的神经网络。他们通过将输入压缩成一种隐藏空间表示(latent-space representation),然后这种重构这种表示的输出进行工作。这种网络由两部分组成:
在这里插入图片描述
编码器:将输入压缩为潜在空间表示。可以用编码函数h = f(x)表示。
解码器:这部分旨在重构来自隐藏空间表示的输入。可以用解码函数r = g(h)表示。

搭建一个自动编码器需要完成下面三样工作:搭建编码器,搭建解码器,设定一个损失函数,用以衡量由于压缩而损失掉的信息。编码器和解码器一般都是参数化的方程,并关于损失函数可导,典型情况是使用神经网络。编码器和解码器的参数可以通过最小化损失函数而优化,例如SGD。

(2)四种基本的自编码器

实现代码及基本原理1(keras实现)
实现代码及基本原理2(keras实现)
实现代码及基本原理3(keras实现)

  • 普通的自编码器
  • 多层自编码器
  • 卷积自编码器
  • 正则化自编码器

(3)处理技巧

  • 参数初始化权重不宜过大,不宜过小,权重应满足方差,均值为0,分布为高斯分布或均匀分布,一般用Xaiver初始化器,对于每一层网络的输入以及节点调整最适合的分布。
  • 数据预处理,transform直接处理,fit_transform先拟合(fit)再transform,小策略: 先在训练数据集fit出一个处理器preprocessor,然后用这个处理器处理训练数据和测试数据,训练集和测试集处理保持一致。
  • 数据获取时,随机取数据,随机一个数,以这个数为起点,取一个batch_size的数据,不放回抽样,不会用到所有数据

(4)Tensorflow代码实现

import numpy as np
import sklearn.preprocessing as prep
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

def xavier_init(fan_in, fan_out, constant = 1):
    low = -constant * np.sqrt(6.0 / (fan_in + fan_out))
    high = constant * np.sqrt(6.0 / (fan_in + fan_out))
    return tf.random_uniform((fan_in, fan_out),
                             minval = low, maxval = high,
                             dtype = tf.float32)
#自编码函数类,包括一些参数设置以及函数实现
class AdditiveGaussianNoiseAutoencoder(object):
    def __init__(self, n_input, n_hidden, transfer_function = tf.nn.softplus, optimizer = tf.train.AdamOptimizer(),
                 scale = 0.1):
        self.n_input = n_input
        self.n_hidden = n_hidden
        self.transfer = transfer_function
        self.scale = tf.placeholder(tf.float32)
        self.training_scale = scale
        network_weights = self._initialize_weights()
        self.weights = network_weights

        # model
        self.x = tf.placeholder(tf.float32, [N
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值