You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

神经网络下一批数据重塑为1D-array时遇TypeError错误求助

解决reshape时的TypeError问题

看起来你在为LSTM准备批量数据做维度重塑时踩了个小坑,这个报错的根源其实很清晰:

报错原因

numpy的reshape()方法不接受None作为维度参数——它要求每个维度参数要么是整数,要么是**-1**(用来让numpy自动推导该维度的大小)。你代码里用了None,Python把它识别为NoneType,自然没法当作整数来处理,所以抛出了这个错误。

另外顺便提一句:也要确认X_t[num-1]y_t[num-1]本身不是None值,不过从报错栈来看,主要问题还是出在reshape的参数上。

修正后的代码

把所有reshape里的None替换成-1就可以解决这个问题,修改后的函数如下:

def next_batch(X_t,y_t,num,batch_size):
    return X_t[num-1].reshape(-1, batch_size, 1), y_t[num-1].reshape(-1, 1, 1)

这里的-1是numpy的特殊占位符,它会根据数组的总元素数量,结合你指定的其他维度大小,自动计算出这个维度的正确数值。

额外注意事项

  • 确保X_t[num-1]的总元素数能被batch_size * 1整除,否则reshape会抛出维度不匹配的错误;同理y_t[num-1]的元素数要能被1*1整除(这个一般不会有问题,但也要留意数据的完整性)。
  • 如果你的目标是生成纯1D数组(比如形状为(n,)),那可以直接用reshape(-1),比如X_t[num-1].reshape(-1),不过从你原代码的维度设计来看,应该是在为LSTM准备带时间步的输入,所以当前的(-1, batch_size, 1)应该更符合你的需求。

内容的提问来源于stack exchange,提问作者Sergiu Groza

火山引擎 最新活动