展平并重塑编码器的输入

我有一个包含 3D 固定长度段的数据集(1,200,4),我想将其输入到具有完全连接层的 Antoencoder 中,类似于:


 encoder

autoencoder.add(Dense(200, input_shape=(self.input_dim,), activation='relu'))  

autoencoder.add(Dense(100, input_shape=(self.input_dim,), activation='relu'))  

autoencoder.add(Dense(80, input_shape=(self.input_dim,), activation='linear'))  

autoencoder.add(Dense(encoding_dim, input_shape=(self.input_dim,), activation='linear')) 

        

#decoder

autoencoder.add(Dense(80, activation='linear')) 

autoencoder.add(Dense(100, activation='relu')) 

autoencoder.add(Dense(200, activation='relu'))  

autoencoder.add(Dense(self.input_dim, activation='linear'))

我知道这个输入在输入到这个网络之前需要被展平,我希望在第一个编码器Flatten()之前添加一个层。Dense()


我不确定的是一种(1,200,4)在解码器部分将输入重建回其自身形状的方法。


如果重要的话,输入由固定长度段的 numpy-ndarray 组成,这样:


print(train_x.shape)

(140508, 1, 200, 4)

例如,假设输入是这样的:


X = np.random.randn(3400, 1, 200, 4)



X.shape

(3400, 1, 200, 4)

我如何在编码器处将展平层应用于此输入,然后在解码器处重建它以获得与上面类似的全连接自动编码器。


对此有什么建议吗?


缥缈止盈
浏览 101回答 1
1回答

30秒到达战场

这里有一种可能性......您最终需要简单地处理维度并进行适当的重塑encoding_dim = 20input_shape = (1,200,4)n_sample = 100X = np.random.uniform(0,1, (n_sample,) + input_shape)autoencoder = Sequential()autoencoder.add(Flatten(input_shape=input_shape))autoencoder.add(Dense(200, activation='relu'))  autoencoder.add(Dense(100, activation='relu'))  autoencoder.add(Dense(80, activation='relu'))  autoencoder.add(Dense(encoding_dim, activation='relu'))         #decoderautoencoder.add(Dense(80, activation='relu')) autoencoder.add(Dense(100, activation='relu')) autoencoder.add(Dense(200, activation='relu'))  autoencoder.add(Dense(np.prod(input_shape), activation='linear'))autoencoder.add(Reshape(input_shape))print(autoencoder.summary())autoencoder.compile('adam', 'mse')autoencoder.fit(X,X, epochs=3)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python