您当前的位置:首页 > IT编程 > TensorFlow
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch |

自学教程:解决ValueError: cannot reshape array of size 2328750 into shape (200,234,1)

51自学网 2021-11-22 12:45:13
  TensorFlow
这篇教程解决ValueError: cannot reshape array of size 2328750 into shape (200,234,1)写得很实用,希望能帮到您。
 

报这种错误的原因主要是2328750 不等于四个数相乘(200×234×1×数据输出长度≠2328750),我碰到错之后,看了一下网上的解决方案好像都没有怎么说清楚这个问题。我也无法说明其具体原理,但是经过修改我成功解决了这个问题,以下是我的解决方案。

在导入数据后,我原本的代码是:

y_train = np.array(y_train,dtype='float32').reshape(-1,4)
X_train = np.array(X_train,dtype='float32').reshape(-1,200,234,1))

为了方便解释,reshape函数中的数字分别为(-1,a,b,c)

总的原理是要使 X_train输出长度 × a × b × c=2328750,其中倍数相当于输出列表的长度,即len(X_train[0])。

①其中 a = len(X_train[0])=230

len(X_train[0])

②在我这个案例中,由于我需要使最后y_train 的个数和X_train 相同。我的len(y_train[0])=4,最后生成的y_train长度为75。即需要 X_train输出长度=75 ,这个数字不用写在函数中,是用于我们的计算。

③于是2328750/75=31050,即我的reshape函数中 a×b×c = 31050

④同时,由于 a 是len(X_train[0])=230,即 b×c =135 ,关于 b c 我并不确定修改方式,这里我当成135×1,即 b = 135 ,c = 1

此时:X_train输出长度(75=生成的y_train长度)× a(len(X_train[0])) × b(135) × c(1)=2328750

最后我的代码更改为

X_train = np.array(X_train,dtype='float32').reshape(-1,len(X_train[0]),135,1)

这样修改之后就没有报错了。


cnn一维卷积实例
运行python脚本时出现no module named cv2怎么解决
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1