tensorflow.python.framework.errors\u impl.InvalidArgumentError:使用输入dim 2索引超出范围;输入只有2个DIM

tensorflow.python.framework.errors\u impl.InvalidArgumentError:使用输入dim 2索引超出范围;输入只有2个DIM,python,tensorflow,keras,Python,Tensorflow,Keras,我使用BiLSTM+CRF在Keras中编写代码来进行命名实体识别。 这是我的模型: model = Sequential() model.add(Embedding(1000, output_dim=128, input_length=100)) model.add(Bidirectional(LSTM(200, return_sequences=True))) model.add(Dropout(0.3)) model.add(TimeDistributed(Dense(2))) crf_

我使用BiLSTM+CRF在Keras中编写代码来进行命名实体识别。 这是我的模型:

model = Sequential()
model.add(Embedding(1000, output_dim=128, 
input_length=100))
model.add(Bidirectional(LSTM(200, return_sequences=True)))
model.add(Dropout(0.3))
model.add(TimeDistributed(Dense(2)))
crf_layer = CRF(2)
model.add(crf_layer)
model.compile('rmsprop', loss=crf_layer.loss_function, metrics=[crf_layer.accuracy])
return model
和Testdata&label

docs = ['Well done!',
        'Good work',
        'Great effort',
        'nice work',
        'Excellent!',
        'Weak',
        'Poor effort!',
        'not good',
        'poor work',
        'Could have done better.']
labels = [1,1,1,1,1,0,0,0,0,0]
#embedding
vocab_size = 2500
encoded_docs = [one_hot(d, vocab_size) for d in docs]
print(encoded_docs)

max_length = 100
padded_docs = pad_sequences(encoded_docs, maxlen=max_length, padding='post')
print(padded_docs)

model = build_embedding_bilstm2_crf_model()

print(model.summary())

model.fit(padded_docs, labels, epochs=50, verbose=0)
我得到以下错误

tensorflow.python.framework.errors_impl.InvalidArgumentError: Index out of range using input dim 2; input has only 2 dims
     [[Node: loss/crf_1_loss/strided_slice_4 = StridedSlice[Index=DT_INT32, T=DT_FLOAT, begin_mask=7, ellipsis_mask=0, end_mask=5, new_axis_mask=0, shrink_axis_mask=0, _device="/job:localhost/replica:0/task:0/device:GPU:0"](_arg_crf_1_target_0_1/_81, metrics/acc/strided_slice_9/stack, metrics/acc/strided_slice_2/stack_1, metrics/acc/strided_slice_9/stack_2)]]
     [[Node: metrics/acc/while_1/Switch_2/_181 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_1763_metrics/acc/while_1/Switch_2", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](^_cloopmetrics/acc/while_1/ExpandDims/dim/_65)]]
使用One_hot将单词转换为向量。使用*生成新序列。 我猜神经网络的结构有问题,为什么