我想创建一个可以读取任意字符串并进行数字预测的网络。我可以创建任意蜇并将其提供给网络,但只能逐字符串。似乎无法创建一批字符串。那是对的吗?当我在示例中增加批量大小时,出现错误。那么,如果我想批量进行培训,我需要将它们分组为固定大小的字符串?或者我错过了什么?这只是keras吗?张量流中是否有相同的限制?有一个更好的方法吗? Here有人正在使用卷积网络来做这些事情(情绪预测)。虽然他们填充输入句子的长度相同。我想知道是否有架构可以解决这个问题。
SELECT DISTINCT Produto.CdEmpresa, MovimentoEstoque.NumMovEstoque, MovimentoEstoque.CdProduto, MAX(MovimentoEstoque.DataHora) AS UltimaMovimentaçao,
MovimentoEstoque.QtdMovimento
FROM Produto
INNER JOIN MovimentoEstoque ON Produto.CdProduto = MovimentoEstoque.CdProduto
WHERE (MovimentoEstoque.NumMovEstoque <> 0)
GROUP BY produto.cdempresa, movimentoestoque.nummovestoque, movimentoestoque.cdproduto, movimentoestoque.qtdmovimento
ORDER BY MovimentoEstoque.QtdMovimento DESC
答案 0 :(得分:1)
您的整体想法是正确的:每批中的句子需要固定长度。为什么?因为网络实际上只是张量操作的图形,并且您需要这些张量具有固定的形状。为简化起见,您要问的是矩阵,其中每行可能具有不同的列数;这是不可能的,所以以类似的方式,不同长度句子的批次得到填充。对于任何张量库也是如此,尝试为NumPy中的每一行创建一个具有不同列数的矩阵。
不同批次的句子可以有不同的最大长度。我们Mask填充序列,因此RNN层简单地忽略它们。结果是它们通过跳过填充的条目来处理不同的长度。 Keras还有utility functions用于填充,单热编码等。
如果使用批量大小为1,则可以避免填充,但大多数梯度下降算法也不会表现得很好,尤其是在数据有噪声的情况下。