Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python RuntimeError:参数1无效:无法在没有元素的张量上执行缩减函数max,因为该操作没有标识_Python_Pandas_Numpy_Tensorflow_Bert Language Model - Fatal编程技术网

Python RuntimeError:参数1无效:无法在没有元素的张量上执行缩减函数max,因为该操作没有标识

Python RuntimeError:参数1无效:无法在没有元素的张量上执行缩减函数max,因为该操作没有标识,python,pandas,numpy,tensorflow,bert-language-model,Python,Pandas,Numpy,Tensorflow,Bert Language Model,我使用预先训练的伯特模型(福楼拜)生成特征,作为多个分类器的输入。在这个例子中,他们只展示了如何处理一个单句,但我得到了一个大约40000个句子的完整文件(数据帧)。因此,给它所有的模型消耗大量的内存,我正在寻找一种方法,将小批量的句子传递给模型,这样就不会造成系统崩溃或“内存不足”错误。我提出了一个解决方案,该解决方案在tpbe进程的时候应该通过2000行,然后最后,我将所有批连接到一个numpy数组中。但由于某些原因,我得到以下错误: layer : <class 'numpy.nda

我使用预先训练的伯特模型(福楼拜)生成特征,作为多个分类器的输入。在这个例子中,他们只展示了如何处理一个单句,但我得到了一个大约40000个句子的完整文件(数据帧)。因此,给它所有的模型消耗大量的内存,我正在寻找一种方法,将小批量的句子传递给模型,这样就不会造成系统崩溃或“内存不足”错误。我提出了一个解决方案,该解决方案在tpbe进程的时候应该通过2000行,然后最后,我将所有批连接到一个numpy数组中。但由于某些原因,我得到以下错误:

layer : <class 'numpy.ndarray'>
layer : <class 'numpy.ndarray'>
layer : <class 'numpy.ndarray'>
layer : <class 'numpy.ndarray'>
layer : <class 'numpy.ndarray'>
layer : <class 'numpy.ndarray'>
layer : <class 'numpy.ndarray'>
layer : <class 'numpy.ndarray'>
layer : <class 'numpy.ndarray'>
Traceback (most recent call last):
  File "knn_case_1.py", line 83, in <module>
    train_data_x_emb, mdl = get_flaubert_layer(train_data_x)
  File "knn_case_1.py", line 45, in get_flaubert_layer
    layer = flaubert(token_ids)
  File "/ho/geta/kelod/anaconda3/lib/python3.7/site-packages/torch/nn/modules/module.py", line 532, in __call__
    result = self.forward(*input, **kwargs)
  File "/ho/geta/kelod/anaconda3/lib/python3.7/site-packages/transformers/modeling_flaubert.py", line 176, in forward
    assert lengths.max().item() <= slen
RuntimeError: invalid argument 1:cannot perform reduction function max on tensor with no elements because the operation does not have an identity

填充变量如下所示:

[[    1  1041 21565 ...     0     0     0]
 [    1   391   177 ...     0     0     0]
 [    1   150 14206 ...     0     0     0]
 ...
 [    1   150  5799 ...     0     0     0]
 [    1    59    48 ...     0     0     0]
 [    1   175    65 ...     0     0     0]]


我猜最后一块是空的,因为你已经切过了尾端,好吧!你知道怎么处理吗?你写了分块代码,不是吗?您不能测试它并确保它始终提供正确大小的块吗?请记住,Python(和numpy)允许您切掉“结尾”,可能返回一个空列表或数组。@hpaulj最后一个块与其他块不同,我所做的是忽略它。我说过,如果一个块==0,那么就没有了,脚本可以工作并生成所有的块,真正的问题是连接所有的块,这样它就类似于数据集,因为我会发送给分类器进行训练。请参阅下面的脚本
[[    1  1041 21565 ...     0     0     0]
 [    1   391   177 ...     0     0     0]
 [    1   150 14206 ...     0     0     0]
 ...
 [    1   150  5799 ...     0     0     0]
 [    1    59    48 ...     0     0     0]
 [    1   175    65 ...     0     0     0]]