我的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].
我不确定我做错了什么。任何帮助将不胜感激。
答案 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。