Deep learning 如何将输入按摩到Keras框架中?
我是keras的新手,尽管阅读了keras中的文档和Deep learning 如何将输入按摩到Keras框架中?,deep-learning,keras,lstm,Deep Learning,Keras,Lstm,我是keras的新手,尽管阅读了keras中的文档和examples文件夹,但我仍在努力解决如何将所有内容整合在一起的问题 特别是,我想从一个简单的任务开始:我有一个令牌序列,其中每个令牌正好有一个标签。我有很多这样的训练数据——实际上是无限的,因为我可以根据需要生成更多的(令牌、标签)训练对 我想建立一个网络来预测给定令牌的标签。令牌的数量必须始终与标签的数量相同(一个令牌=一个标签) 我希望这是基于所有周围标记的,比如在同一行、句子或窗口内,而不仅仅是前面的标记 我自己走了多远: 创建了训
examples
文件夹,但我仍在努力解决如何将所有内容整合在一起的问题
特别是,我想从一个简单的任务开始:我有一个令牌序列,其中每个令牌正好有一个标签。我有很多这样的训练数据——实际上是无限的,因为我可以根据需要生成更多的(令牌、标签)
训练对
我想建立一个网络来预测给定令牌的标签。令牌的数量必须始终与标签的数量相同(一个令牌=一个标签)
我希望这是基于所有周围标记的,比如在同一行、句子或窗口内,而不仅仅是前面的标记
我自己走了多远:
- 创建了训练numpy向量,其中我使用token-to-int和label-to-int映射将每个句子转换为token向量和label向量(长度相同)
- 使用分类交叉熵和一个LSTM层编写了一个模型,基于
input\u dim
和input\u shape
参数。。。由于每个句子都有不同的长度(不同数量的标记和标签),我应该为输入层设置什么作为input\u dim
binary\u crossentropy
而不是mse
from keras.models import Model
from keras.layers import Input, LSTM, TimeDistributed
from keras.preprocessing import sequence
# Make sure all sequences are of same length
X_train = sequence.pad_sequences(X_train, maxlen=maxlen)
# The input shape is your sequence length and your token embedding size (which is 1)
inputs = Input(shape=(maxlen, 1))
# Build a bidirectional RNN
lstm_forward = LSTM(128)(inputs)
lstm_backward = LSTM(128, go_backwards=True)(inputs)
bidirectional_lstm = merge([lstm_forward, lstm_backward], mode='concat', concat_axis=2)
# Output each timestep into a fully connected layer with linear
# output to map to an integer
sequence_output = TimeDistributed(Dense(1, activation='linear'))(bidirectional_lstm)
# Dense(n_classes, activation='sigmoid') if you want to classify
model = Model(inputs, sequence_output)
model.compile('adam', 'mse')
model.fit(X_train, y_train)