报这种错误的原因主要是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])。

①其中 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)

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

可以借助一下在线分解质因数的网站,来看数据有哪些因数可以调整,因为在这之中只有bc的值我是不确定的

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐