小编C M*_*lah的帖子

在 Keras 上将注意力层与解码器输入 seq2seq 模型连接起来

我正在尝试使用 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 张量?

python deep-learning keras tensorflow

5
推荐指数
1
解决办法
3575
查看次数

如何修复在SQL Server中创建表时出现的语法错误

我试图在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附近的语法错误.

如果你给我一个暗示会给出一个解决方案.谢谢

c# sql sql-server visual-studio-2010

-1
推荐指数
1
解决办法
228
查看次数