You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

比特币数据分析LSTM训练报错:slice index 0越界问题求助

比特币LSTM训练错误修复方案

错误原因

你的代码中循环构建训练集的切片逻辑完全错误:

x_train.append(train_data[i:60:i, 0])

当i从60开始遍历train_data时,切片起始索引i大于结束索引60,且步长设为i,这会导致每个x_train的元素都是空数组,最终x_train整体是一个维度为[0, ?, 1]的空数组。LSTM层无法处理输入的第一维度为0的情况,因此触发切片越界错误。

修正代码

将循环中的切片逻辑改为取当前i之前的60个时间步数据作为输入样本,对应i位置的数据作为标签:

data = df.set_index('Date')
dataset = df.values
training_data_len = math.ceil(len(dataset) * .8)

scaler = MinMaxScaler(feature_range=(0,1))
scaled_data = scaler.fit_transform(dataset)

train_data = scaled_data[0:training_data_len, :]

x_train = []
y_train = []

# 修正切片逻辑:取i-60到i的前60条数据
for i in range(60, len(train_data)):
    x_train.append(train_data[i-60:i, 0])
    y_train.append(train_data[i, 0])

x_train, y_train = np.array(x_train), np.array(y_train)
x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))

es_callback = keras.callbacks.EarlyStopping(monitor='val_loss', patience=3)

model = Sequential()
model.add(LSTM(256, return_sequences=True, input_shape=(x_train.shape[1], 1)))

补充说明

  • 修正后x_train的每个样本都是长度为60的时间序列,符合LSTM对输入格式(样本数,时间步长,特征数)的要求。
  • 确保你的df中包含足够多的数据行,至少要有60条训练数据(否则len(train_data)小于60时,循环不会执行,x_train仍会为空)。

内容的提问来源于stack exchange,提问作者Mücahit Yıldırım

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 03:21:02