Tensorflow:使用训练模型预测

2024-10-01 04:45:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个CNN模型来使用API序列对恶意软件进行分类。我训练过它。现在我想用我的模型来预测恶意软件。但是我遇到了这个bug,它说有一个InvalidArgumentError:index[1265137]=-2147483648不在[0295]中。 有人能帮我解决这个问题吗

train_labels=np.array(train_df.label)
train_seq = pad_sequences(train_df.seq.values, maxlen = 6000)
test_seq = pad_sequences(test_df.seq.values, maxlen = 6000)

skf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)

max_len = 6000
max_cnt = 295                    
embed_size = 256
num_filters = 64
kernel_size = [2,4,6,8,10,12,14]
conv_action = 'relu'
mask_zero = False
TRAIN = True

import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
meta_train = np.zeros(shape = (len(train_seq),8))
meta_test = np.zeros(shape = (len(test_seq),8))
FLAG = False
for i,(tr_ind,te_ind) in enumerate(skf.split(train_seq,train_labels)):
    print('FOLD: '.format(i))
    print(len(te_ind),len(tr_ind))
    model = TextCNN(max_len,max_cnt,embed_size,num_filters,kernel_size,conv_action,mask_zero)
    model_name = 'benchmark_textcnn_fold_'+str(i)
    X_train,X_train_label = train_seq[tr_ind],train_labels[tr_ind]
    X_val,X_val_label = train_seq[te_ind],train_labels[te_ind]

    model = TextCNN(max_len,max_cnt,embed_size,
            num_filters,kernel_size,
            conv_action,
            mask_zero)

    model_save_path = '../model_weight_final/%s_%s.hdf5'%(model_name,embed_size)
    early_stopping =EarlyStopping(monitor='val_loss', patience=3)
    model_checkpoint = ModelCheckpoint(model_save_path, save_best_only=True, save_weights_only=True)
    if TRAIN and FLAG:
        model.fit(X_train,X_train_label,
                  validation_data=(X_val,X_val_label),
                  epochs=100,batch_size=64,
                  shuffle=True,
                  callbacks=[early_stopping,model_checkpoint]
                 )
        model.load_weights(model_save_path)
    pred_val = model.predict(X_val,batch_size=128,verbose=1)
    pred_test = model.predict(test_seq,batch_size=128,verbose=1)

    meta_train[te_ind] = pred_val
    meta_test += pred_test
K.clear_session()
meta_test /= 5.0
FOLD: 
2780 11107
2780/2780 [==============================] - ETA: 3: - ETA: 4: - ETA: 4: - ETA: 4: - ETA: 3: - ETA: 3: - ETA: 3: - ETA: 3: - ETA: 3: - ETA: 2: - ETA: 2: - ETA: 2: - ETA: 2: - ETA: 1: - ETA: 1: - ETA: 1: - ETA: 1: - ETA: 55s - ETA: 40 - ETA: 25 - ETA: 10 - 327s 118ms/step
 1664/12955 [==>...........................] - ETA: 24:2 - ETA: 24:1 - ETA: 23:5 - ETA: 23:4 - ETA: 23:3 - ETA: 23:1 - ETA: 23:0 - ETA: 22:4 - ETA: 22:3 - ETA: 22:1 - ETA: 22:0 - ETA: 21:4 - ETA: 21:33
---------------------------------------------------------------------------
InvalidArgumentError                      Traceback (most recent call last)
<ipython-input-33-d1f608365da1> in <module>
     29         model.load_weights(model_save_path)
     30     pred_val = model.predict(X_val,batch_size=128,verbose=1)
---> 31     pred_test = model.predict(test_seq,batch_size=128,verbose=1)
     32 
     33     meta_train[te_ind] = pred_val

c:\users\xie07\appdata\local\programs\python\python37\lib\site-packages\keras\engine\training.py in predict(self, x, batch_size, verbose, steps, callbacks, max_queue_size, workers, use_multiprocessing)
   1460                                             verbose=verbose,
   1461                                             steps=steps,
-> 1462                                             callbacks=callbacks)
   1463 
   1464     def train_on_batch(self, x, y,

c:\users\xie07\appdata\local\programs\python\python37\lib\site-packages\keras\engine\training_arrays.py in predict_loop(model, f, ins, batch_size, verbose, steps, callbacks)
    322             batch_logs = {'batch': batch_index, 'size': len(batch_ids)}
    323             callbacks._call_batch_hook('predict', 'begin', batch_index, batch_logs)
--> 324             batch_outs = f(ins_batch)
    325             batch_outs = to_list(batch_outs)
    326             if batch_index == 0:

c:\users\xie07\appdata\local\programs\python\python37\lib\site-packages\tensorflow_core\python\keras\backend.py in __call__(self, inputs)
   3738         value = math_ops.cast(value, tensor.dtype)
   3739       converted_inputs.append(value)
-> 3740     outputs = self._graph_fn(*converted_inputs)
   3741 
   3742     # EagerTensor.numpy() will often make a copy to ensure memory safety.

c:\users\xie07\appdata\local\programs\python\python37\lib\site-packages\tensorflow_core\python\eager\function.py in __call__(self, *args, **kwargs)
   1079       TypeError: For invalid positional/keyword argument combinations.
   1080     """
-> 1081     return self._call_impl(args, kwargs)
   1082 
   1083   def _call_impl(self, args, kwargs, cancellation_manager=None):

c:\users\xie07\appdata\local\programs\python\python37\lib\site-packages\tensorflow_core\python\eager\function.py in _call_impl(self, args, kwargs, cancellation_manager)
   1119       raise TypeError("Keyword arguments {} unknown. Expected {}.".format(
   1120           list(kwargs.keys()), list(self._arg_keywords)))
-> 1121     return self._call_flat(args, self.captured_inputs, cancellation_manager)
   1122 
   1123   def _filtered_call(self, args, kwargs):

c:\users\xie07\appdata\local\programs\python\python37\lib\site-packages\tensorflow_core\python\eager\function.py in _call_flat(self, args, captured_inputs, cancellation_manager)
   1222     if executing_eagerly:
   1223       flat_outputs = forward_function.call(
-> 1224           ctx, args, cancellation_manager=cancellation_manager)
   1225     else:
   1226       gradient_name = self._delayed_rewrite_functions.register()

c:\users\xie07\appdata\local\programs\python\python37\lib\site-packages\tensorflow_core\python\eager\function.py in call(self, ctx, args, cancellation_manager)
    509               inputs=args,
    510               attrs=("executor_type", executor_type, "config_proto", config),
--> 511               ctx=ctx)
    512         else:
    513           outputs = execute.execute_with_cancellation(

c:\users\xie07\appdata\local\programs\python\python37\lib\site-packages\tensorflow_core\python\eager\execute.py in quick_execute(op_name, num_outputs, inputs, attrs, ctx, name)
     65     else:
     66       message = e.message
---> 67     six.raise_from(core._status_to_exception(e.code, message), None)
     68   except TypeError as e:
     69     keras_symbolic_tensors = [

c:\users\xie07\appdata\local\programs\python\python37\lib\site-packages\six.py in raise_from(value, from_value)

InvalidArgumentError:  indices[126,5137] = -2147483648 is not in [0, 295)
     [[node embedding_4/embedding_lookup (defined at c:\users\xie07\appdata\local\programs\python\python37\lib\site-packages\tensorflow_core\python\framework\ops.py:1751) ]] [Op:__inference_keras_scratch_graph_2602]

Function call stack:
keras_scratch_graph


Tags: intestselfsizemodelbatchtrainval