我在我的模型中使用了一个dropout图层 . 当我使用时态数据时,我希望每个时间步长的noise_shape相同 - >(batch_size,1,features) .
问题是如果我使用的批量大小不适合提供的样本,我会收到一条错误消息 . 示例:batch_size = 2,samples = 7.在上一次迭代中,batch_size(2)大于其余样本(1)
其他层(我的情况:Masking,Dense和LSTM)显然没有问题,只使用较小的批次用于最后的,不适合的样品 .
ConcreteError:训练数据形状为:[23,300,34] batchsize = 3
InvalidArgumentError(参见上面的回溯):不兼容的形状:[2,300,34]与[3,1,34] [[节点:dropout_18 / cond / dropout / mul = Mul [T = DT_FLOAT,_device =“/ job: localhost / replica:0 / task:0 / device:CPU:0“](dropout_18 / cond / dropout / div,dropout_18 / cond / dropout / Floor)]]
这意味着对于最后一批[ 2 ,300,34],batch_size不能拆分为[ 3 ,1,34]
因为我仍处于参数调整阶段(确实停止了:-)),
-
回顾(使用LSTM),
-
列车/瓦/测试的百分比,
-
和batchsize
仍将不断变化 . 所有上述内容都会影响训练数据的实际长度和形状 .
我可以尝试总是通过一些计算找到batch_size的下一个拟合int . 例如,如果batch_size = 4且samples = 21,我可以将batch_size减少到3.但是如果训练样本的数量是例如再次对此进行补偿是行不通的 . 另外如果我选择4,我可能想要4 .
我觉得复杂吗?有没有很多异常编程的简单解决方案?
谢谢
1 回答
感谢this post中的nuric,答案非常简单 .