将段落中的每个单词分类(TF Keras)

时间:2019-07-09 16:57:22

标签: python tensorflow tf.keras

我想创建一个模型,将0和input_len之间的vocab_size整数向量转换为0和31之间的input_len整数向量。

整数的顺序很重要,因为这些向量代表了我试图用32种可能的类别对每个单词进行分类的段落。

我有以下训练数据:

段落本身(输入)的格式为单词数组,其编号为0-vocab_size,并填充或剪切为input_len个单词 标签(输出)的格式设置为标签0-31的等长数组(0为无)

一个虚构的示例输入可能类似于:[12,4,63,2,9],而输出可能类似于[0,0,3,0,7]

model = tf.keras.models.Sequential([
    tf.keras.layers.Embedding(vocab_size, embedding_dim, input_length=input_len),
    tf.keras.layers.LSTM(128, input_shape=(input_len, embedding_dim),
                         return_sequences=True),
    tf.keras.layers.Dense(32, activation='relu')
])

model.compile('adam', 'sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(x_train, y_train, epochs=10)
model.evaluate(x_test, y_test)

上面的代码抛出错误

  

InvalidArgumentError:无法挤压dim [1],预期尺寸为1,得到1000“

当前为input_len = 1000

TLDR,我有一个形状为(training_set_size, input_len)的输入,并且希望LSTM有一个形状为(training_set_size, input_len)的输出。

0 个答案:

没有答案