首页 > 解决方案 > 频谱图数据的 LSTM 输入形状

问题描述

我有一个 numpy 数组,其形状类似于n x t x f其中 n 是频谱图的数量,t 是时间样本,f 是频率样本。

这是代码:

print(train.shape) # this would print (4431,399,101)

inputs = Input(shape=(399, 101))

encoded = LSTM(50, 
               activation="relu", 
               return_sequences=True)(inputs)
encoded = LSTM(25, 
               activation="relu", 
               return_sequences=False)(encoded)

decoded = RepeatVector(399)(encoded)
decoded = LSTM(50, 
               activation="relu", 
               return_sequences=True)(decoded)
decoded = LSTM(25, 
               return_sequences=True)(decoded)

autoencoder = Model(inputs, decoded)
encoder = Model(inputs, encoded)

autoencoder.compile(optimizer='adam', 
                    loss='mse',  
                    metrics=['acc'])

autoencoder.fit(train, train_labels, epochs=20, batch_size=32)

它提出:

InvalidArgumentError:不兼容的形状:[32,399,101] 与 [32,1]
[[node gradient_tape/mean_squared_error/BroadcastGradientArgs(定义于:1)]] [Op:__inference_train_function_7304]

我想错误出在输入形状中,但我不明白原因。

标签: tensorflowmachine-learningkeraslstmspectrogram

解决方案


您的模型输入需要二维数组,而您的输入数组反映了三个维度。我猜。


推荐阅读