示例请求: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)
您还可以使用隐藏表示,甚至编码器层来生成另一个算法(例如监督算法)的输入。如果没有标签,预测函数的输出应该是什么?