你好 Everone 我正在尝试解决给定的错误消息。我写了一个python函数:
def get_dataset_partition_tf(ds, trin_split=0.8,
val_split=0.1, shuffle=True, shuffle_size=10000):
ds_size = len(ds)
assert (train_split + test_split + val_split) == 1
if shuffle:
ds = ds.shuffle(shuffle_size, seed=12)
train_size = int(train_split*ds_size)
val_size = ds.skip(val_split_ds_size)
train_ds = ds.take(train_size)
val_ds = ds.skip(train_size).take(val_size)
test_ds = ds.skip(train_size).skip(val_size)
return train_ds, val_ds ,val_ds, test_ds
但是在我的 jupyter 笔记本中运行代码后,我收到一条错误消息:
"too many values to unpack (expected 3)"
如果有人向我提供解决方案以及一些评论,这将是很大的帮助。
致以诚挚的问候 阿希克·马哈茂德
我已经尝试过运行的功能。之后我尝试创建 3 个名为
train_ds
、val_ds
、test ds
的变量
我写的代码是:
train_ds, val_ds, test_ds = get_dataset_partitions_tf(data)
我收到错误
"too many values to unpack (expected 3)"
现在我在这里寻求专家的帮助来解决问题
您还应该提供完整的错误和相关代码,但错误措辞是这里的关键(太多值无法解压)。
train_ds, val_ds, test_ds = get_dataset_partitions_tf(data)
您的函数 get_dataset_partions 返回 4 个变量,但您还保存了 3 个变量
感谢您在 Stack OV 上提问。
您定义了一个返回 4 个对象的函数,而您只需要其中 3 个。
def get_dataset_partition_tf(ds, trin_split=0.8,
val_split=0.1, shuffle=True, shuffle_size=10000):
# Your logic.
# Your function is returning 4 objects.
return train_ds, val_ds, val_ds, test_ds
# Based on the way that you are calling the function.
# You are "unpacking" only 3 of 4 objects, raising the exception.
train_ds, val_ds, test_ds = get_dataset_partitions_tf(data)
在我看来,你正在做两件事:
val_ds
变量重复(位置 2 和位置 3)。vad_ds
并且您没有声明目标变量。# Based on 1, you could remove the duplicated variable `val_ds` at the `return` statement:
def get_dataset_partition_tf(ds, trin_split=0.8,
val_split=0.1, shuffle=True, shuffle_size=10000):
# Your logic.
# Your function is returning 3 objects now.
return train_ds, val_ds, val_ds, test_ds
# Based on 2, you could add a new variable (`val_ds_duplication`) after call the function.
train_ds, val_ds, val_ds_duplication, test_ds = get_dataset_partitions_tf(data)
参考资料:
我一直在尝试查看Python语言参考,以便找到任何带有函数的“拆包”示例,但我没有进行深入的研究,也许有一个关于拆包的示例,您可以理解发生了什么在引擎盖下。