ValueError:检查输入时出错:预期conv2d_1_input具有4个维,但数组的形状为(595,10083)

我正在尝试使用Keras构建cnn模型。这是我的代码:

import keras
import tensorflow as tf
from keras.layers import Dense
from keras.models import Sequential
from keras.models import load_model
from keras.callbacks import EarlyStopping  
from sklearn.model_selection import train_test_split
from __future__ import print_function
import pandas as pd
import numpy as np
from keras.datasets import cifar10
from keras.models import Sequential
from keras.layers import Dense,Dropout,activation,flatten
from keras.layers import Conv2D
from google.colab import drive
drive.mount('/content/drive')
                  ...

# Define x_train...data
x_data=df.iloc[:,1:10084].values-25 
# x_data = np.array(x_data).tolist()  
y_data=df[['type1','type2']].values
X_train,X_test,y_train,y_test = train_test_split(x_data,y_data,test_size=0.2)

model.fit(X_train,batch_size=100,epochs=100,verbose=1,validation_data=(X_test,y_test),callbacks=[history])

返回错误

  

ValueError:检查输入时出错:预期conv2d_1_input具有4维,但数组的形状为(595,10083)

参考其他问题后,我尝试使用

重塑数据数组的维数
X_train = X_train[np.newaxis,:,:]

将其更改为3维并返回错误:

  

ValueError:检查输入时出错:预期conv2d_1_input具有4维,但数组的形状为(1,595,10083)

如何将数据的维数增加到4?

c2125102 回答:ValueError:检查输入时出错:预期conv2d_1_input具有4个维,但数组的形状为(595,10083)

模型的第一层是2D卷积,它期望(我相信)具有多个通道的2D图像数据。像这样:

(img_height,img_width,num_channels)。

此外,您需要为“批量”或“样本”设置另一个尺寸。因此,最终形状将是:

(num_samples,img_height,img_width,num_channels)。

因此,您需要将输入数据重塑为上述模式,并根据我从代码中得出的结论对各个维度进行解释。

您可能会看np.reshape和np.expand_dims之类的功能,具体取决于输入数据的格式。

您可以这样创建一些测试数据:

x_train = np.random.random((4,32,3))

# then try out the model prediction

model.predict(x_train)  

这是四张32x32大小的图像和3个通道,用于验证您的处理。

在进行实际拟合时,您还需要创建适合y_train的内容。

我希望这会有所帮助。

本文链接:https://www.f2er.com/3148061.html

大家都在问