笔者也是刚刚接触TensorFlow,在学习按照官方教程的过程中有一个很简单的电影评价例子。
其导入数据的代码为:
train_validation_split = tfds.Split.TRAIN.subsplit([6, 4])
(train_data, validation_data), test_data = tfds.load(
name="imdb_reviews",
split=(train_validation_split, tfds.Split.TEST),
as_supervised=True)
这个代码其实本身不难理解,就是导入数据然后将训练集合分割。然而运行会报错:
AssertionError: Unrecognized instruction format: NamedSplit('train')(tfds.percent[0:60])
笔者找了很久类似的错误,查阅了很多文档也没有找到相应的解决方法与问题来源,而且遇到这种错误的人是少之又少,几乎找不到什么材料。但是笔者猜测应该是和Python版本、Tensorflow版本以及tensorflow-datasets版本相关。
于是我用了另外一种分割方法来代替原来的写法,具体代码为:
(train_data, validation_data, test_data) = tfds.load(
name="imdb_reviews",
split=('train[:60%]', 'train[60%:]', 'test'),
as_supervised=True)
这个样子就不会报错,并且成功引入数据,希望可以帮到大家。
如果有疑问,可以加笔者QQ:1574143668一起交流。
完整的报错指示为:
Traceback (most recent call last):
File "D:/pythontest/Pycharm/TensorFlowTest/TestFromGoogleForText.py", line 24, in <module>
as_supervised=True)
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\tensorflow_datasets\core\api_utils.py", line 52, in disallow_positional_args_dec
return fn(*args, **kwargs)
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\tensorflow_datasets\core\registered.py", line 318, in load
ds = dbuilder.as_dataset(**as_dataset_kwargs)
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\tensorflow_datasets\core\api_utils.py", line 52, in disallow_positional_args_dec
return fn(*args, **kwargs)
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\tensorflow_datasets\core\dataset_builder.py", line 476, in as_dataset
datasets = utils.map_nested(build_single_dataset, split, map_tuple=True)
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\tensorflow_datasets\core\utils\py_utils.py", line 153, in map_nested
for v in data_struct]
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\tensorflow_datasets\core\utils\py_utils.py", line 153, in <listcomp>
for v in data_struct]
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\tensorflow_datasets\core\utils\py_utils.py", line 153, in map_nested
for v in data_struct]
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\tensorflow_datasets\core\utils\py_utils.py", line 153, in <listcomp>
for v in data_struct]
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\tensorflow_datasets\core\utils\py_utils.py", line 159, in map_nested
return function(data_struct)
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\tensorflow_datasets\core\dataset_builder.py", line 544, in _build_single_dataset
read_config=read_config,
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\tensorflow_datasets\core\dataset_builder.py", line 901, in _as_dataset
shuffle_files=shuffle_files,
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\tensorflow_datasets\core\tfrecords_reader.py", line 246, in read
datasets = utils.map_nested(read_instruction, instructions, map_tuple=True)
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\tensorflow_datasets\core\utils\py_utils.py", line 159, in map_nested
return function(data_struct)
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\tensorflow_datasets\core\tfrecords_reader.py", line 140, in _read_single_instruction
instruction = ReadInstruction.from_spec(instruction)
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\tensorflow_datasets\core\tfrecords_reader.py", line 438, in from_spec
instruction = _str_to_relative_instruction(subs[0])
File "C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\lib\site-packages\tensorflow_datasets\core\tfrecords_reader.py", line 279, in _str_to_relative_instruction
raise AssertionError('Unrecognized instruction format: %s' % spec)
AssertionError: Unrecognized instruction format: NamedSplit('train')(tfds.percent[0:60])