Python 带有2D numpy阵列输入的Tensorflow Keras Conv2D错误
我想使用2D numpy数组作为输入来训练CNN,但我收到了以下错误:Python 带有2D numpy阵列输入的Tensorflow Keras Conv2D错误,python,tensorflow,keras,deep-learning,conv-neural-network,Python,Tensorflow,Keras,Deep Learning,Conv Neural Network,我想使用2D numpy数组作为输入来训练CNN,但我收到了以下错误:ValueError:检查输入时出错:预期conv2d\u输入有4个维度,但得到了形状为(21,21)的数组 我的输入实际上是一个21x21 numpy浮点数组。网络的第一层定义为Conv2D(32,(3,3),input_shape=(21,21,1)),以匹配输入数组的形状 我发现了一些类似的问题,但没有一个是关于2D输入数组的,它们主要处理图像。根据文档,Conv2D希望输入一个4D张量,包含(样本、通道、行、列),但我
ValueError:检查输入时出错:预期conv2d\u输入有4个维度,但得到了形状为(21,21)的数组
我的输入实际上是一个21x21 numpy浮点数组。网络的第一层定义为Conv2D(32,(3,3),input_shape=(21,21,1))
,以匹配输入数组的形状
我发现了一些类似的问题,但没有一个是关于2D输入数组的,它们主要处理图像。根据文档,Conv2D希望输入一个4D张量,包含(样本、通道、行、列)
,但我找不到任何解释这些值含义的文档。与图像输入相关的类似问题建议使用np.ndarray.reforme()
重塑输入数组,但在尝试这样做时,我会收到一个输入错误
我如何在这样的输入阵列上训练CNN?
input\u shape
是否应该是不同大小的元组?您当前的numpy数组具有维度(21,21)
。但是,TensorFlow希望输入张量的维度格式为(批次大小、高度、宽度、通道)
或BHWC,这意味着您需要将numpy输入数组转换为4维度(从当前的2维度)。一种方法如下:
input = np.expand_dims(input, axis=0)
input = np.expand_dims(input, axis=-1)
现在,numpyinput
数组有维度:(1,21,21,1)
,可以传递给TF Conv2D操作
希望这有帮助!:) 谢谢大家!!这就解决了问题。