Версия Tensorflow = 1.5 keras версия = 2.2.4 Все нормально, когда я тренирую модель на компьютере с графическим процессором, но что-то происходит при обучении или прогнозировании модели на машине с процессором.Кажется, что Embedding Layser не может распознать значение маскирования -1.Вот мои коды:
def make_model():
title_ids = Input(shape=(MAXLEN_CONTENT, ), name = 'title_content_ids')
title_ids_mask = Masking(mask_value=-1, name='mask')(title_ids) # (?, 3075)
embedding = Embedding(len(tok.word_index) + 1, 300, trainable=True)
title_embed = embedding(title_ids_mask) # (?, 44, 300)
title_encode = encode_rcnn(title_embed) # (?, 856)
mlp0 = Dense(512,activation='relu',name='mlp0')(title_encode)
mlp1 = Dense(256,activation='relu',name='mlp1')(mlp0)
score = Dense(max(cate_label.values())+1 ,activation='softmax', name='mlp2')(mlp1)
model = Model( title_ids, score)
model.compile(loss='categorical_crossentropy', optimizer=Adam(lr=0.0001), metrics=['accuracy'] )
return model
И я предварительно обработал список интерфереров слов с заполнением и заполнением -1.title_content_pad_array = sequence.pad_sequences(title_content_ids_list, maxlen=MAXLEN_CONTENT, padding='post', truncating='post',value=-1)
Вот ошибка:
Caused by op u'embedding_1/embedding_lookup', defined at:
File "cate_class.py", line 281, in <module>
model = make_model()
File "cate_class.py", line 208, in make_model
title_embed = embedding(title_ids_mask) # (?, 44, 300)
File "/data01/yanan/envgpu/local/lib/python2.7/site-packages/keras/engine/base_layer.py", line 457, in __call__
output = self.call(inputs, **kwargs)
File "/data01/yanan/envgpu/local/lib/python2.7/site-packages/keras/layers/embeddings.py", line 141, in call
out = K.gather(self.embeddings, inputs)
File "/data01/yanan/envgpu/local/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py", line 1228, in gather
return tf.nn.embedding_lookup(reference, indices)
File "/data01/yanan/envgpu/local/lib/python2.7/site-packages/tensorflow/python/ops/embedding_ops.py", line 325, in embedding_lookup
transform_fn=None)
File "/data01/yanan/envgpu/local/lib/python2.7/site-packages/tensorflow/python/ops/embedding_ops.py", line 150, in _embedding_lookup_and_transform
result = _clip(_gather(params[0], ids, name=name), ids, max_norm)
File "/data01/yanan/envgpu/local/lib/python2.7/site-packages/tensorflow/python/ops/embedding_ops.py", line 54, in _gather
return array_ops.gather(params, ids, name=name)
File "/data01/yanan/envgpu/local/lib/python2.7/site-packages/tensorflow/python/ops/array_ops.py", line 2585, in gather
params, indices, validate_indices=validate_indices, name=name)
File "/data01/yanan/envgpu/local/lib/python2.7/site-packages/tensorflow/python/ops/gen_array_ops.py", line 1864, in gather
validate_indices=validate_indices, name=name)
File "/data01/yanan/envgpu/local/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 787, in _apply_op_helper
op_def=op_def)
File "/data01/yanan/envgpu/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 3160, in create_op
op_def=op_def)
File "/data01/yanan/envgpu/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 1625, in __init__
self._traceback = self._graph._extract_stack() # pylint: disable=protected-access
InvalidArgumentError (see above for traceback): indices[117,157] = -1 is not in [0, 875812)
[[Node: embedding_1/embedding_lookup = Gather[Tindices=DT_INT32, Tparams=DT_FLOAT, _class=["loc:@embedding_1/embeddings"], validate_indices=true, _device="/job:localhost/replica:0/task:0/device:CPU:0"](embedding_1/embeddings/read, embedding_1/Cast)]]
Еще раз, все хорошо на моем компьютере с графическим процессором.Так что не так с тем же кодом, запущенным на компьютере с процессором?