我想创建一个模型,将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)
的输出。