Keras:input_shape = train_data.shape产生“列表索引超出范围”

时间:2018-03-28 15:48:57

标签: python tensorflow keras

我想使用Keras构建CNN-LSTM网络。但是,我无法为第一层的actionValidate参数找到正确的形状。

我的public function actionValidate($id) { $model = $this->findModel($id); $query = new purchases::find()->where('purchase_id' = :id); echo $query->createCommand()->sql; if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->purchase_id]); } return $this->render('validate', [ 'model' => $model, ]); } input_shape形状的ndarray; 1433张尺寸为32x32的照片。

this example中找到,我尝试使用train_data,这导致与(1433, 32, 32)相同的错误:

  

IndexError:列表索引超出范围

相关代码是:

input_shape=train_data.shape[1:]

我发现这个错误的所有结果都是在不同的情况下产生的;不是通过input_shape=train_data.shape。那么我该如何塑造我的输入?我是否必须在完全不同的地方寻找错误?

更新 完成错误:

train_data, train_labels = get_training_data()
# train_data = train_data.reshape(train_data.shape + (1,))
model = Sequential()
model.add(TimeDistributed(Conv2D(
      CONV_FILTER_SIZE[0],
      CONV_KERNEL_SIZE,
      activation="relu",
      padding="same"),
   input_shape=train_data.shape[1:]))

1 个答案:

答案 0 :(得分:4)

TimeDistributed图层与Conv2D图层结合使用时,似乎input_shape至少需要一个长度为4的元组:input_shape = (number_of_timesteps, height, width, number_of_channels)

您可以尝试修改代码,例如:

model = Sequential()
model.add(TimeDistributed(Conv2D(
      CONV_FILTER_SIZE[0],
      CONV_KERNEL_SIZE,
      activation="relu",
      padding="same"),
    input_shape=(None, 32, 32, 1))

更多信息here