【问题标题】:Predicting with a previously saved model: (0) Invalid argument: indices[0,9] = 14914 is not in [0, 14480)使用先前保存的模型进行预测:(0) 无效参数:indices[0,9] = 14914 is not in [0, 14480)
【发布时间】:2021-02-02 00:22:08
【问题描述】:

我正在尝试使用 save 来预测看不见的文本数据。但是我收到有关嵌入查找的错误。 我不知道如何解决它。类似的错误与词汇量有关。但是,由于我不是在训练模型,所以我的情况有所不同。 这是代码sn-p

processed_train_sequences = pad_sequences(processed_train_sequences, maxlen=38, padding='post')
print("processed train sequence",processed_train_sequences)
saved_model = load_model('TrainModel9.h5', compile = True)

pred_prob = saved_model.predict(processed_train_sequences)
print(pred_prob)

这是完整的回溯。

  File "PSOforDA_withoutparallelprocessing.py", line 212, in <module>
    cost, pos = optimizer.optimize(f, iters=1)  # returns a tuple of the local best cost and the local best position among the swarm.
  File "/home/kosimadukwe/.local/lib/python3.8/site-packages/pyswarms/discrete/binary.py", line 176, in optimize
    self.swarm.current_cost = compute_objective_function(
  File "/home/kosimadukwe/.local/lib/python3.8/site-packages/pyswarms/backend/operators.py", line 239, in compute_objective_function
    return objective_func(swarm.position, **kwargs)
  File "PSOforDA_withoutparallelprocessing.py", line 127, in f
    j =  [f_per_particle(x[i], alpha,sent) for i in range(n_particles)]
  File "PSOforDA_withoutparallelprocessing.py", line 127, in <listcomp>
    j =  [f_per_particle(x[i], alpha,sent) for i in range(n_particles)]
  File "PSOforDA_withoutparallelprocessing.py", line 104, in f_per_particle
    pred_prob = saved_model.predict(processed_train_sequences)
  File "/usr/pkg/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py", line 88, in _method_wrapper
    return method(self, *args, **kwargs)
  File "/usr/pkg/lib/python3.8/site-packages/tensorflow/python/keras/engine/training.py", line 1268, in predict
    tmp_batch_outputs = predict_function(iterator)
  File "/usr/pkg/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py", line 580, in __call__
    result = self._call(*args, **kwds)
  File "/usr/pkg/lib/python3.8/site-packages/tensorflow/python/eager/def_function.py", line 650, in _call
    return self._concrete_stateful_fn._filtered_call(canon_args, canon_kwds)  # pylint: disable=protected-access
  File "/usr/pkg/lib/python3.8/site-packages/tensorflow/python/eager/function.py", line 1661, in _filtered_call
    return self._call_flat(
  File "/usr/pkg/lib/python3.8/site-packages/tensorflow/python/eager/function.py", line 1745, in _call_flat
    return self._build_call_outputs(self._inference_function.call(
  File "/usr/pkg/lib/python3.8/site-packages/tensorflow/python/eager/function.py", line 593, in call
    outputs = execute.execute(
  File "/usr/pkg/lib/python3.8/site-packages/tensorflow/python/eager/execute.py", line 59, in quick_execute
    tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
tensorflow.python.framework.errors_impl.InvalidArgumentError: 2 root error(s) found.
  (0) Invalid argument:  indices[0,9] = 14914 is not in [0, 14480)
         [[node sequential_9/embedding_9/embedding_lookup (defined at PSOforDA_withoutparallelprocessing.py:104) ]]
         [[sequential_9/embedding_9/embedding_lookup/_6]]
  (1) Invalid argument:  indices[0,9] = 14914 is not in [0, 14480)
         [[node sequential_9/embedding_9/embedding_lookup (defined at PSOforDA_withoutparallelprocessing.py:104) ]]
0 successful operations.
0 derived errors ignored. [Op:__inference_predict_function_2294]

Errors may have originated from an input operation.
Input Source operations connected to node sequential_9/embedding_9/embedding_lookup:
 sequential_9/embedding_9/embedding_lookup/1381 (defined at /usr/pkg/lib/python3.8/contextlib.py:113)

Input Source operations connected to node sequential_9/embedding_9/embedding_lookup:
 sequential_9/embedding_9/embedding_lookup/1381 (defined at /usr/pkg/lib/python3.8/contextlib.py:113)

Function call stack:
predict_function -> predict_function

运行一些测试后,我认为当您尝试预测的单词之一不在嵌入中时会出现此错误? 我如何将零分配给那些? 或者我如何使用 try-except 块捕获错误?

【问题讨论】:

    标签: python-3.x tensorflow keras text-classification


    【解决方案1】:

    所以我用vocab_size = len(tokenizer.word_index) + 1 训练了原始模型,这意味着与嵌入相比,它的词汇量减少了。所以我用vocab = 3000000 + 1 重新训练了它。从而使其可以访问更多单词。我使用的嵌入是 word2vec。这样就解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      • 2019-01-03
      • 1970-01-01
      • 2017-07-22
      • 1970-01-01
      • 2018-09-18
      • 1970-01-01
      相关资源
      最近更新 更多