我有包含100,000行的多元时间序列数据,目前有32个要素(这些要素将在以后减少)。
我已经尝试使用layer_flatten。正如其他人在github上建议的那样。不幸的是对我没用。
当我尝试构建keras模型时会生成错误。
这是我的代码:
lstm_v1 <- keras_model_sequential() %>%
layer_lstm(units = 32, input_shape = c(nrow(data), 1, ncol(data)), batch_size = nrow(data), return_sequences = T) %>%
layer_dense(units = 1, activation = "sigmoid")
lstm_v1 %>% compile(
loss = 'binary_crossentropy',
optimizer = 'rmsprop',
metrics = c('accuracy')
)
summary(lstm_v1)
hist_lstm_v1 <- lstm_v1 %>% fit(
x = as.matrix(data), y = km_dt$cluster, batch_size = nrow(spg_tt_1_scaled), verbose = 2
)
答案 0 :(得分:1)
Keras LSTM层期望输入3
的颜色像(batch_size, seq_length, input_dims)
一样暗淡,但您将其分配错误。试试这个
layer_lstm(units = 32, input_shape = c(seq_length, 32), batch_size = batch_size, return_sequences = T)
您需要将数据重塑为三个暗角,其中新的暗角将代表顺序数据。
我使用玩具数据集演示了一个示例,此处的数据和标签最初使用以下脚本来构成((150, 32), (150,))
形状:
seq_length = 10 # choice
dataX = []
dataY = []
for i in range(0, 150 - seq_length, 1):
dataX.append(data[i:i+seq_length])
dataY.append(labels[i+seq_length-1])
import numpy as np
dataX = np.reshape(dataX, (-1, seq_length, 32))
dataY = np.reshape(dataY, (-1, 1))
# dataX.shape, dataY.shape
输出:((140, 10, 32), (140, 1))
现在您可以安全地将其输入模型了。