InvalidArgumentError:indexs [24,0] = 335不在[0,304]中[[{{node user-embedding-mlp_1 / GatherV2}}]]

我在python 3.7中使用tensorflow 1.15和keras 2.1.2 这是用于协作过滤的多层感知器代码。模型已经建立,模型摘要中没有错误。但是,在出现新纪元和低于错误的准确性时,情况越来越好。我在这里包括了我的模型代码和精度代码。

latent_dim = 10

*# Define inputs*
article_input = Input(shape=[1],name='article-input')
user_input = Input(shape=[1],name='user-input')

*# MLP Embeddings*
article_embedding_mlp = Embedding(num_article + 1,latent_dim,name='article-embedding-mlp')(article_input)
article_vec_mlp = flatten(name='flatten-article-mlp')(article_embedding_mlp)

user_embedding_mlp = Embedding(num_user + 1,name='user-embedding-mlp')(user_input)
user_vec_mlp = flatten(name='flatten-user-mlp')(user_embedding_mlp)

*# MF Embeddings*
article_embedding_mf = Embedding(num_article + 1,name='article-embedding-mf')(article_input)
article_vec_mf = flatten(name='flatten-article-mf')(article_embedding_mf)

user_embedding_mf = Embedding(num_user + 1,name='user-embedding-mf')(user_input)
user_vec_mf = flatten(name='flatten-user-mf')(user_embedding_mf)

*# MLP layers*
concat = merge([article_vec_mlp,user_vec_mlp],mode='concat',name='concat')
concat_dropout = Dropout(0.2)(concat)
fc_1 = Dense(100,name='fcs-1',activation='relu')(concat_dropout)
fc_1_bn = BatchNormalization(name='batch-norm-1s')(fc_1)
fc_1_dropout = Dropout(0.2)(fc_1_bn)
fc_2 = Dense(50,name='fcs-2',activation='relu')(fc_1_dropout)
fc_2_bn = BatchNormalization(name='batch-norm-2s')(fc_2)
fc_2_dropout = Dropout(0.2)(fc_2_bn)

*# Prediction from both layers*
pred_mlp = Dense(10,name='pred-mlp',activation='relu')(fc_2_dropout)
pred_mf = merge([article_vec_mf,article_vec_mf],mode='dot',name='pred-mf')
combine_mlp_mf = merge([pred_mf,pred_mlp],name='combine-mlp-mf')

result = Dense(1,name='result',activation='relu')(combine_mlp_mf)

model = Model([article_input,user_input],result)
model.compile(optimizer='rmsprop',loss='mean_squared_error')

model.summary()

#训练模型

history = model.fit([train.id,train.user_id],train.user_like,nb_epoch=3)
pd.Series(history.history['loss']).plot(logy=True)
plt.xlabel("Epoch")
plt.ylabel("Train Error")
plt.show()

y_hat = np.round(model.predict([test.id,test.user_id]),decimals=2)
y_true = test.user_like
mean_absolute_error(y_true,y_hat)

以下是我得到的错误。我可以为我的协作过滤提供一个解决方案吗?

InvalidArgumentError                      Traceback (most recent call last)
E:\My\Ananconda\envs\tensor\lib\site-packages\tensorflow_core\python\client\session.py in _do_call(self,fn,*args)
   1364     try:
-> 1365       return fn(*args)
   1366     except errors.OpError as e:

E:\My\Ananconda\envs\tensor\lib\site-packages\tensorflow_core\python\client\session.py in _run_fn(feed_dict,fetch_list,target_list,options,run_metadata)
   1349       return self._call_tf_sessionrun(options,feed_dict,-> 1350                                       target_list,run_metadata)
   1351 

E:\My\Ananconda\envs\tensor\lib\site-packages\tensorflow_core\python\client\session.py in _call_tf_sessionrun(self,run_metadata)
   1442                                             fetch_list,-> 1443                                             run_metadata)
   1444 

InvalidArgumentError: indices[24,0] = 335 is not in [0,304)
     [[{{node user-embedding-mlp_1/GatherV2}}]]

During handling of the above exception,another exception occurred:

InvalidArgumentError                      Traceback (most recent call last)
<ipython-input-13-1444472fcfba> in <module>
----> 1 history = model.fit([train.id,nb_epoch=3)
      2 pd.Series(history.history['loss']).plot(logy=True)
      3 plt.xlabel("Epoch")
      4 plt.ylabel("Train Error")
      5 plt.show()

E:\My\Ananconda\envs\tensor\lib\site-packages\keras\engine\training.py in fit(self,x,y,batch_size,epochs,verbose,callbacks,validation_split,validation_data,shuffle,class_weight,sample_weight,initial_epoch,steps_per_epoch,validation_steps,**kwargs)
   1655                               initial_epoch=initial_epoch,1656                               steps_per_epoch=steps_per_epoch,-> 1657                               validation_steps=validation_steps)
   1658 
   1659     def evaluate(self,x=None,y=None,E:\My\Ananconda\envs\tensor\lib\site-packages\keras\engine\training.py in _fit_loop(self,f,ins,out_labels,val_f,val_ins,callback_metrics,validation_steps)
   1211                     batch_logs['size'] = len(batch_ids)
   1212                     callbacks.on_batch_begin(batch_index,batch_logs)
-> 1213                     outs = f(ins_batch)
   1214                     if not isinstance(outs,list):
   1215                         outs = [outs]

E:\My\Ananconda\envs\tensor\lib\site-packages\keras\backend\tensorflow_backend.py in __call__(self,inputs)
   2355         session = get_session()
   2356         updated = session.run(fetches=fetches,feed_dict=feed_dict,-> 2357                               **self.session_kwargs)
   2358         return updated[:len(self.outputs)]
   2359 

E:\My\Ananconda\envs\tensor\lib\site-packages\tensorflow_core\python\client\session.py in run(self,fetches,run_metadata)
    954     try:
    955       result = self._run(None,options_ptr,--> 956                          run_metadata_ptr)
    957       if run_metadata:
    958         proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)

E:\My\Ananconda\envs\tensor\lib\site-packages\tensorflow_core\python\client\session.py in _run(self,handle,run_metadata)
   1178     if final_fetches or final_targets or (handle and feed_dict_tensor):
   1179       results = self._do_run(handle,final_targets,final_fetches,-> 1180                              feed_dict_tensor,run_metadata)
   1181     else:
   1182       results = []

E:\My\Ananconda\envs\tensor\lib\site-packages\tensorflow_core\python\client\session.py in _do_run(self,run_metadata)
   1357     if handle is None:
   1358       return self._do_call(_run_fn,feeds,targets,-> 1359                            run_metadata)
   1360     else:
   1361       return self._do_call(_prun_fn,fetches)

E:\My\Ananconda\envs\tensor\lib\site-packages\tensorflow_core\python\client\session.py in _do_call(self,*args)
   1382                     '\nsession_config.graph_options.rewrite_options.'
   1383                     'disable_meta_optimizer = True')
-> 1384       raise type(e)(node_def,op,message)
   1385 
   1386   def _extend_graph(self):

InvalidArgumentError: indices[24,304)
     [[node user-embedding-mlp_1/GatherV2 (defined at E:\My\Ananconda\envs\tensor\lib\site-packages\tensorflow_core\python\framework\ops.py:1748) ]]

Original stack trace for 'user-embedding-mlp_1/GatherV2':
  File "E:\My\Ananconda\envs\tensor\lib\runpy.py",line 193,in _run_module_as_main
    "__main__",mod_spec)
  File "E:\My\Ananconda\envs\tensor\lib\runpy.py",line 85,in _run_code
    exec(code,run_globals)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\ipykernel_launcher.py",line 16,in <module>
    app.launch_new_instance()
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\traitlets\config\application.py",line 664,in launch_instance
    app.start()
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\ipykernel\kernelapp.py",line 583,in start
    self.io_loop.start()
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\tornado\platform\asyncio.py",line 149,in start
    self.asyncio_loop.run_forever()
  File "E:\My\Ananconda\envs\tensor\lib\asyncio\base_events.py",line 442,in run_forever
    self._run_once()
  File "E:\My\Ananconda\envs\tensor\lib\asyncio\base_events.py",line 1462,in _run_once
    handle._run()
  File "E:\My\Ananconda\envs\tensor\lib\asyncio\events.py",line 145,in _run
    self._callback(*self._args)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\tornado\ioloop.py",line 690,in <lambda>
    lambda f: self._run_callback(functools.partial(callback,future))
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\tornado\ioloop.py",line 743,in _run_callback
    ret = callback()
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\tornado\gen.py",line 787,in inner
    self.run()
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\tornado\gen.py",line 748,in run
    yielded = self.gen.send(value)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\ipykernel\kernelbase.py",line 361,in process_one
    yield gen.maybe_future(dispatch(*args))
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\tornado\gen.py",line 209,in wrapper
    yielded = next(result)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\ipykernel\kernelbase.py",line 268,in dispatch_shell
    yield gen.maybe_future(handler(stream,idents,msg))
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\tornado\gen.py",line 541,in execute_request
    user_expressions,allow_stdin,File "E:\My\Ananconda\envs\tensor\lib\site-packages\tornado\gen.py",in wrapper
    yielded = next(result)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\ipykernel\ipkernel.py",line 300,in do_execute
    res = shell.run_cell(code,store_history=store_history,silent=silent)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\ipykernel\zmqshell.py",line 536,in run_cell
    return super(ZMQInteractiveShell,self).run_cell(*args,**kwargs)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\IPython\core\interactiveshell.py",line 2858,in run_cell
    raw_cell,store_history,silent,shell_futures)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\IPython\core\interactiveshell.py",line 2886,in _run_cell
    return runner(coro)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\IPython\core\async_helpers.py",line 68,in _pseudo_sync_runner
    coro.send(None)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\IPython\core\interactiveshell.py",line 3063,in run_cell_async
    interactivity=interactivity,compiler=compiler,result=result)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\IPython\core\interactiveshell.py",line 3254,in run_ast_nodes
    if (await self.run_code(code,result,async_=asy)):
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\IPython\core\interactiveshell.py",line 3331,in run_code
    exec(code_obj,self.user_global_ns,self.user_ns)
  File "<ipython-input-10-fe3553834f55>",line 11,in <module>
    user_embedding_mlp = Embedding(num_user + 1,name='user-embedding-mlp')(user_input)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\keras\engine\topology.py",line 603,in __call__
    output = self.call(inputs,**kwargs)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\keras\layers\embeddings.py",line 134,in call
    out = K.gather(self.embeddings,inputs)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\keras\backend\tensorflow_backend.py",line 1193,in gather
    return tf.gather(reference,indices)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\tensorflow_core\python\util\dispatch.py",line 180,in wrapper
    return target(*args,**kwargs)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\tensorflow_core\python\ops\array_ops.py",line 3956,in gather
    params,indices,axis,name=name)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\tensorflow_core\python\ops\gen_array_ops.py",line 4082,in gather_v2
    batch_dims=batch_dims,name=name)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\tensorflow_core\python\framework\op_def_library.py",line 794,in _apply_op_helper
    op_def=op_def)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\tensorflow_core\python\util\deprecation.py",line 507,in new_func
    return func(*args,**kwargs)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\tensorflow_core\python\framework\ops.py",line 3357,in create_op
    attrs,op_def,compute_device)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\tensorflow_core\python\framework\ops.py",line 3426,in _create_op_internal
    op_def=op_def)
  File "E:\My\Ananconda\envs\tensor\lib\site-packages\tensorflow_core\python\framework\ops.py",line 1748,in __init__
    self._traceback = tf_stack.extract_stack()
iCMS 回答:InvalidArgumentError:indexs [24,0] = 335不在[0,304]中[[{{node user-embedding-mlp_1 / GatherV2}}]]

以这种方式重新定义num_user和num_article ....

num_user = int(articles.user_id.max())
num_article = int(articles.id.max())
本文链接:https://www.f2er.com/2207014.html

大家都在问