ValueError:参数必须为密集张量:(((10,4945),1024)-形状为[2],但想要的形状为[2,2]

时间:2019-05-21 02:04:06

标签: python tensorflow keras

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

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

1 个答案:

答案 0 :(得分:1)

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

因此,您的代码应为:

public partial class MainWindow : Window
{
    protected override void OnSourceInitialized(EventArgs e)
    {
        base.OnSourceInitialized(e);

        var source = PresentationSource.FromVisual(this) as HwndSource;

        source.AddHook(WndProc);

        WinAPI.DragAcceptFiles(new WindowInteropHelper(this).Handle, true);
    }

    private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
    {
        if (msg == WinAPI.WM_DROPFILES)
        {
            // Not reaching here
        }

        return IntPtr.Zero;
    }
}

以防万一,您没有在嵌入层中添加 input_length input_shape 参数,然后

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

其他

input_shape = (None,)

有关更多信息,请检查官方代码here