【问题标题】:ValueError: Argument must be a dense tensor: ((10, 4945), 1024) - got shape [2], but wanted [2, 2]ValueError: Argument must be a dense tensor: ((10, 4945), 1024) - 得到形状 [2],但想要 [2, 2]
【发布时间】:2019-05-21 02:04:06
【问题描述】:

我的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].

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

【问题讨论】:

  • 将 input_dim=(self.BATCH_SIZE, len(self._tokens)) 更改为 input_dim=len(self._tokens)。您不应在此处明确提供批量大小

标签: python tensorflow keras


【解决方案1】:

根据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

更多信息请查看官方代码here

【讨论】:

    猜你喜欢
    • 2018-12-13
    • 2017-08-07
    • 2017-03-09
    • 2020-03-28
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    相关资源
    最近更新 更多