首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >降维:最佳架构

降维:最佳架构
EN

Stack Overflow用户
提问于 2018-04-06 22:17:55
回答 1查看 143关注 0票数 1

我有一个数据集:

代码语言:javascript
复制
100 timesteps
10 variables 

例如,

代码语言:javascript
复制
dataset = np.arange(1000).reshape(100,10)

这10个变量是相互关联的。所以我想把它的维数从10降到1。还有,100个时间步长是相关的。

哪个深度学习架构适合它的家伙?

编辑:

代码语言:javascript
复制
from keras.models import Sequential
from keras.layers import LSTM, Dense

X = np.arange(1000).reshape(100,10)

model = Sequential()
model.add(LSTM(input_shape = (100, 10), return_sequences=False))
model.add(Dense(1))
model.compile(loss='mse', optimizer='adam')

model.fit(???, epochs=50, batch_size=5)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-07 01:49:10

为了压缩数据,最好的操作方法是使用自动编码器。

自动编码器架构:

输入-->编码器(降低输入的维数)

通过提取经过训练的编码器,我们可以找到一种方法来表示您的数据使用较少的维度。

代码语言:javascript
复制
from keras.layers import Input, Dense
from keras.models import Model

input = Input(shape=(10,)) #will take an input in shape of (num_samples, 10)

encoded = Dense(1, activation='relu')(input) #returns a 1D vector from input

decoded = Dense(10, activation='sigmoid)(encoded) #tries to recreate input from 1D vector

autoencoder = Model(input, decoded) #input image ---> lossy reconstruction from decoded

现在我们有了自动编码器,我们需要提取您真正想要的内容--降低输入维数的部件编码器:

代码语言:javascript
复制
encoder = Model(input, encoded) #maps input to reduced-dimension encoded form

编译和训练自动编码器:

代码语言:javascript
复制
autoencoder.compile(optimizer='adam', loss='mse')
X = np.arange(1000).reshape(100, 10)
autoencoder.fit(X, X, batch_size=5, epochs=50)

现在,您可以使用编码器降低维数:

代码语言:javascript
复制
encoded_form = encoder.predict(<something with shape (samples, 10)>) #outs 1D vector

你可能也想要解码器。如果要使用它,请将这段代码放在编译之前,并安装自动编码器:

代码语言:javascript
复制
encoded_form = Input(shape=(1,))
decoder_layer = autoencoder.layers[-1]
decoder = Model.(encoded_form, decoder_layer(encoded_form))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49701706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档