我有一个数据集:
100 timesteps
10 variables 例如,
dataset = np.arange(1000).reshape(100,10)这10个变量是相互关联的。所以我想把它的维数从10降到1。还有,100个时间步长是相关的。
哪个深度学习架构适合它的家伙?
编辑:
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)发布于 2018-04-07 01:49:10
为了压缩数据,最好的操作方法是使用自动编码器。
自动编码器架构:
输入-->编码器(降低输入的维数)
通过提取经过训练的编码器,我们可以找到一种方法来表示您的数据使用较少的维度。
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现在我们有了自动编码器,我们需要提取您真正想要的内容--降低输入维数的部件编码器:
encoder = Model(input, encoded) #maps input to reduced-dimension encoded form编译和训练自动编码器:
autoencoder.compile(optimizer='adam', loss='mse')
X = np.arange(1000).reshape(100, 10)
autoencoder.fit(X, X, batch_size=5, epochs=50)现在,您可以使用编码器降低维数:
encoded_form = encoder.predict(<something with shape (samples, 10)>) #outs 1D vector你可能也想要解码器。如果要使用它,请将这段代码放在编译之前,并安装自动编码器:
encoded_form = Input(shape=(1,))
decoder_layer = autoencoder.layers[-1]
decoder = Model.(encoded_form, decoder_layer(encoded_form))https://stackoverflow.com/questions/49701706
复制相似问题