Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.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 如果函数是';知道张量的秩和/或形状是必要的_Python_Tensorflow - Fatal编程技术网

Python 如果函数是';知道张量的秩和/或形状是必要的

Python 如果函数是';知道张量的秩和/或形状是必要的,python,tensorflow,Python,Tensorflow,我试图在tensorflow DatasetV1Adapter中映射一个函数,通过该函数,字符串被拆分,然后填充到固定长度 注意,我一直坚持这样做,而不是使用新的文本向量化层,因为几个不同的原因,所以我必须坚持这样做,除非我采用更基本的解决方法,这会导致tf.Dataset的效率降低 #加载原始数据并打印示例 将tensorflow_数据集作为TFD导入 导入tensorflow作为tf imdb\u reviews=tfds.load('imdb\u reviews') 列车原始=imdb列车

我试图在tensorflow DatasetV1Adapter中映射一个函数,通过该函数,字符串被拆分,然后填充到固定长度

注意,我一直坚持这样做,而不是使用新的文本向量化层,因为几个不同的原因,所以我必须坚持这样做,除非我采用更基本的解决方法,这会导致tf.Dataset的效率降低

#加载原始数据并打印示例
将tensorflow_数据集作为TFD导入
导入tensorflow作为tf
imdb\u reviews=tfds.load('imdb\u reviews')
列车原始=imdb列车审查[“列车”]
test_raw=imdb_reviews['test']
对于生产线中的项目,采用(1):
打印(项['label'].numpy())
打印(项['text'].numpy())
>>0
>>b“这是一部绝对糟糕的电影。不要被克里斯托弗·沃肯引诱进来……”
#我希望能够做到的是——即拆分字符串,然后填充/截断到500的长度
def格式_数据集(输入_数据):
split=tf.strings.split(输入_数据['text'])
padded=tf.pad(split,[[0,tf.reduce_max(0500 split.shape[1])]))
截断=tf.切片(填充,(填充形状[1]-500),(500))
返回(截断,输入_数据['label'])
列车数据集=列车原始地图(格式数据集)
test\u dataset=test\u raw.map(格式化\u数据集)
text_dataset=train_raw.map(lambda数据:data['text'])
#输出:
StagingError:在转换的代码中:
:11格式\u数据集*
padded=tf.pad(split,[[0,tf.reduce_max(0500 split.shape[1])]))
/示例代码/venv/lib/python3.7/site packages/tensorflow\u core/python/framework/tensor\u shape.py:863\u getitem__
返回self.\u dims[key].值
索引器:列表索引超出范围
#因为在我的映射函数中,图形没有为张量分配特定的形状或等级
打印(分割形状)
打印(打印(拆分))
>>(无)
>>
有没有办法强迫它在这样的情况下保持一个特定的等级/形状,在这种情况下,我确实提前知道我将通过哪些数据输入

我尝试使用len(split)和len(padded)来代替split.shape[1]和padded.shape[1],只是想看看是否可以使其对未知形状具有弹性,但以下是输出:

ValueError:在转换的代码中:
:14格式\u数据集*
截断=tf.切片(填充,(透镜(填充)-500),(500))
/示例代码/venv/lib/python3.7/site packages/tensorflow\u core/python/ops/array\u ops.py:951 slice
返回gen\u数组操作。\u切片(输入、开始、大小、名称=名称)
/示例代码/venv/lib/python3.7/site-packages/tensorflow\u-core/python/ops/gen\u-array\u-ops.py:8451
“切片”,输入=输入,开始=开始,大小=大小,名称=名称)
/示例代码/venv/lib/python3.7/site packages/tensorflow\u core/python/framework/op\u def\u library.py:742\u apply\u op\u helper
attrs=attr_protos,op_def=op_def)
/示例代码/venv/lib/python3.7/site-packages/tensorflow\u-core/python/framework/func\u-graph.py:595\u-create\u-op\u-internal
计算机(U设备)
/示例代码/venv/lib/python3.7/site packages/tensorflow\u core/python/framework/ops.py:3322\u create\u op\u internal
op_def=op_def)
/示例代码/venv/lib/python3.7/site packages/tensorflow\u core/python/framework/ops.py:1786\uu init__
控制(输入操作)
/示例代码/venv/lib/python3.7/site-packages/tensorflow\u-core/python/framework/ops.py:1622\u-create\u-c\u-op
提升值错误(str(e))
ValueError:对于具有以下输入形状的“切片”(op:“切片”),形状必须为秩1,但为秩0:[?],[],[]。