使用 fromtensorflow.keras.utils import pad_sequences 会导致 IndexError:数组索引太多

问题描述 投票:0回答:1

我正在使用

pad_sequences()
。 这是我的代码:

from tensorflow.keras.utils import pad_sequences
input_x[i] = pad_sequences(x00_1[i], padding='post', maxlen=128,dtype='float32')

x00_1.形状 = ( 1, 389, 39 )

但我收到错误

IndexError: too many indices for array

我该如何修复它?

我的版本:

Python 3.6
Tensorflow 1.14.0
Keras2.3.1
python tensorflow keras
1个回答
0
投票

这可能是因为您尝试将 pad_sequences 应用于 'x00_1[i]' 的元素,该元素与 pad_sequences 的预期输入形状不兼容。

'x00_1[i]' 是一个 3 维数组

pad_sequences() 通常用于序列列表,其中每个序列都是一维数组或整数或浮点数列表。它的长度应该是统一的。

您正在尝试使用 input_x[i] = pad_sequences() 索引 x00_1。由于 x00_1 是 3D 数组,x00_1[i] 将是 2D 数组,这可能不是 pad_sequences 的预期输入。

  • 要解决此问题:
  1. 如果要填充第二个维度,则需要循环遍历第一个维度并对每个序列列表应用 pad_sequences 。

  2. 在应用 pad_sequences 之前,您应该将数组的相关切片转换为序列列表。

  • 您可以使用以下步骤对其进行编码:
  1. 使用循环将形状为 (389, 39) 的 2D 数组转换为 1D 数组列表(每个数组的长度为 39)
  2. 应用 pad_sequences
  3. 将填充序列列表转换回 NumPy 数组
© www.soinside.com 2019 - 2024. All rights reserved.