我正在尝试使用 Keras 库实现带有注意力的序列 2 序列模型。模型框图如下

该模型将输入序列嵌入到 3D 张量中。然后双向 lstm 创建编码层。接下来,编码序列被发送到自定义注意力层,该层返回具有每个隐藏节点注意力权重的 2D 张量。
解码器输入作为一个热向量注入模型中。现在在解码器(另一个 bi-lstm)中,解码器输入和注意力权重都作为输入传递。解码器的输出通过 softmax 激活函数发送到时间分布密集层,以概率的方式得到每个时间步的输出。该模型的代码如下:
encoder_input = Input(shape=(MAX_LENGTH_Input, ))
embedded = Embedding(input_dim=vocab_size_input, output_dim= embedding_width, trainable=False)(encoder_input)
encoder = Bidirectional(LSTM(units= hidden_size, input_shape=(MAX_LENGTH_Input,embedding_width), return_sequences=True, dropout=0.25, recurrent_dropout=0.25))(embedded)
attention = Attention(MAX_LENGTH_Input)(encoder)
decoder_input = Input(shape=(MAX_LENGTH_Output,vocab_size_output))
merge = concatenate([attention, decoder_input])
decoder = Bidirectional(LSTM(units=hidden_size, input_shape=(MAX_LENGTH_Output,vocab_size_output))(merge))
output = TimeDistributed(Dense(MAX_LENGTH_Output, activation="softmax"))(decoder)
Run Code Online (Sandbox Code Playgroud)
问题是当我连接注意力层和解码器输入时。由于解码器输入是 3D 张量而注意力是 2D 张量,因此显示以下错误:
ValueError:
Concatenate图层需要具有匹配形状的输入,除了 concat 轴。得到输入形状:[(None, 1024), (None, 10, 8281)]
如何将 2D 注意张量转换为 3D 张量?
我试图在SQL Server数据库中创建一个表,但我收到语法错误.
String quary1 = "CREATE TABLE " +chatTable +
"("
+"From varchar(255),"
+"To varchar(255),"
+"Message varchar(255))";
SqlCommand cmd1 = new SqlCommand(quary1, con);
cmd1.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)
它给出了一条错误消息
From附近的语法错误.
如果你给我一个暗示会给出一个解决方案.谢谢