首页 > 解决方案 > ValueError: Argument must be a dense tensor: ((10, 4945), 1024) - 得到形状 [2],但想要 [2, 2]

问题描述

我的keras模型是:

        model = Sequential()
        model.add(Embedding(input_dim=(self.BATCH_SIZE,
                                       len(self._tokens)), output_dim=1024))

        model.add(LSTM(128))

        model.add(Dropout(rate=0.5))
        model.add(Dense(len(self._tokens)))
        model.add(Activation('softmax'))

我得到一个错误:

ValueError: Argument must be a dense tensor: ((10, 4945), 1024) - got shape [2], but wanted [2, 2].

我不确定我做错了什么。任何帮助,将不胜感激。

标签: pythontensorflowkeras

解决方案


根据keras官方文档,嵌入层的input_dim参数应该是词汇的大小,即最大整数索引+1(int>0)。

所以,你的代码应该是:

model.add(Embedding(input_dim=len(self._tokens), output_dim=1024))

如果您没有在嵌入层中添加input_lengthinput_shape参数,则

input_shape = (None,)

别的

input_shape = (input_length,) # added 'input_length=' parameter

有关更多信息,请在此处查看官方代码。


推荐阅读