Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
示例请求:python中的无监督深度学习_Python_Deep Learning_Theano_Unsupervised Learning - Fatal编程技术网

示例请求:python中的无监督深度学习

示例请求:python中的无监督深度学习,python,deep-learning,theano,unsupervised-learning,Python,Deep Learning,Theano,Unsupervised Learning,上下文 我对神经网络比较陌生,我想学习一些聚类方法,这些方法能够在学习了表示之后进行类预测 hidden_dim = 32 自动编码器/rbms/deep Faith networks的一些在线教程通常有一个有监督的fit()调用,例如fit(X,y)或Pipeline(rbm,logistic)。见: 我想探索隐藏层对未标记数据的影响,所以像k-means这样的算法是不够的 请求 很高兴看到一个Python示例,它具有类似于fit(X)和predict(Y)的调用,其中X和Y是未标记的数

上下文

我对神经网络比较陌生,我想学习一些聚类方法,这些方法能够在学习了表示之后进行类预测

hidden_dim = 32
自动编码器/rbms/deep Faith networks的一些在线教程通常有一个有监督的fit()调用,例如fit(X,y)或Pipeline(rbm,logistic)。见:

我想探索隐藏层对未标记数据的影响,所以像k-means这样的算法是不够的

请求

很高兴看到一个Python示例,它具有类似于fit(X)和predict(Y)的调用,其中X和Y是未标记的数据集。其思想是predict()通过查找由fit()中学习的表示法确定的“最近”类来运行

我当然不希望全面实施,但相关资源将不胜感激

例如,在中,我们似乎可以构建一个DBN。是否有相应的predict()方法

附录

一个有点相关的问题:


在python深度学习包中,您通常必须首先定义模型的体系结构,然后对其进行训练(调整)

我能想到的最简单的自动编码器应用是keras

首先需要定义隐藏(压缩)表示的大小

hidden_dim = 32
进行必要的进口

from keras.layers import Input, Dense
from keras.models import Model
然后定义模型的体系结构

input = Input(shape=(xxx,))
encode = Dense(hidden_dim, activation='relu')(input)
decode = Dense(xxx, activation='sigmoid')(encode)

autoencoder = Model(input, decode)
上面的xxx是您输入的维度。例如,如果要在MNIST数据集(具有28x28个图像)上训练自动编码器,xxx将是28x28=784

现在使用您选择的成本函数和优化器编译您的模型

autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')
现在,为了训练无监督模型,您应该放置与输入和输出相同的图像。有些方法也会给输出增加噪声,但我会让您自己决定。假设X是您的培训数据,X_val是您的验证数据。根据需要调整超参数

autoencoder.fit(X, X, epochs=100, batch_size=32, shuffle=True, validation_data=(X_val, X_val)
然后假设您有一个名为X_test的测试集,您可以要求您的模型尝试并复制它

y_hat = autoencoder.predict(X_test)
TL;DR
这比sklearn要难一点,但基本步骤是:

  • 定义您的网络架构(层、激活、形状等)
  • 编译您的模型(定义成本函数和优化器)
  • 根据数据调整模型(同时定义培训参数)
  • 预测给定测试输入的输出
获取内部表示

为了现在回答第二个问题,您需要分别定义编码器和解码器

 encoder = Model(input, encode)
 encoded_input = Input(shape=(hidden_dim,))
 decoder_layer = autoencoder.layers[-1]
 decoder = Model(encoded_input, decoder_layer(encoded_input))
现在只需通过编码器和解码器传递测试输入(我们称之为原始输入)

hidden_representation = encoder.predict(original)
recreation = decoder.predict(hidden_representation)

您还可以使用隐藏表示,甚至编码器层来生成另一个算法(例如监督算法)的输入。

如果没有标签,预测函数的输出应该是什么?