用法学习
input_shape = x_train.shape[1:]
并不是使用了切片操作。实际上,这里使用的是切片的一种扩展形式,也称为切片操作符的省略形式。
在这里,x_train.shape
返回一个包含数组维度的元组,例如 (batch_size, sequence_length, features)
。然后,x_train.shape[1:]
使用切片操作符 :
表示从第二个维度(索引为 1 的维度)开始,一直到最后一个维度的所有元素。因此,x_train.shape[1:]
就是表示从第二个维度开始到最后一个维度的所有维度。
这种写法是为了获取输入数据的形状,通常在构建神经网络时需要知道输入数据的形状,以便正确定义模型的输入层。对于二维数据,这就是样本的长度和特征的数量。
例如,如果 x_train
是一个形状为 (batch_size, sequence_length, features)
的三维数组,那么 input_shape = x_train.shape[1:]
就会得到一个包含 sequence_length
和 features
的元组,这就是神经网络模型中的输入形状。这样,你就可以在模型的第一层使用 input_shape
参数,例如:
model.add(Conv1D(filters=64, kernel_size=3, input_shape=input_shape))
这样的写法使得代码更具可读性,并且更通用,因为它适用于不同维度的数据。
实现代码
x_train, x_test = x_train[:, :, np.newaxis], x_test[:, :, np.newaxis] # 在数据中新添加通道维度,用于扩张成为三维数据
# 输入数据的维度
input_shape = x_train.shape[1:]