Error when checking input: expected input_1 to have shape (1024,) but got array with shape (819200,)

问题描述

在使用卷积神经网络(CNN)训练模型时候,你会发现有一系列的维度不匹配的问题,报错千奇百怪。

一会说应该输入的是2维,但是输入数据却是3维。

一会说应该输入的是(1024,),但是输入的却是(819200,)。虽然数字不同,但是遇到的问题总归都是这样。

经过我几个消失的奋斗终于解决了这个问题:

解决方案

(1)更改输入数据维度,善于运用reshape将数据更改为你想要的类型。

博主冷月无声的这篇应该能够解决你所有的reshape问题。

Python的reshape的用法:reshape(1,-1)_冷月无声的博客-CSDN博客_reshape函数python

(2)更改模型input部分的输入值,将其改为获取到的训练模型部分的数据

        inputs = Input(shape = (x_train.shape[1],))
        x1 = keras.layers.core.Reshape((x_train.shape[1],1), input_shape=(x_train.shape[1],))((inputs))
        x1 = keras.layers.convolutional.Conv1D(64,10,strides=1,kernel_initializer='he_uniform')(x1)
        x1 = keras.layers.normalization.BatchNormalization()(x1)
        x1 = keras.layers.core.Activation('relu')(x1)

这两招基本上都能解决问题。

(3)数据溢出问题

很多时候,训练时候,数据维度选择弄错会导致溢出,可以通过减少其输入量以及特征降维来解决这个问题。你需要注意的是,那个特征是不是一定需要这么多的维度才能实现训练的目的。

你可能感兴趣的:(EEG,python,解决方案,cnn,深度学习,机器学习,valueError,python)