在深度学习模型中工作时如何解决“太多值无法解压(预期为 3)”错误

问题描述 投票:0回答:2

你好 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)"

现在我在这里寻求专家的帮助来解决问题

python tensorflow deep-learning conv-neural-network
2个回答
0
投票

您还应该提供完整的错误和相关代码,但错误措辞是这里的关键(太多值无法解压)。

 train_ds, val_ds, test_ds = get_dataset_partitions_tf(data)

您的函数 get_dataset_partions 返回 4 个变量,但您还保存了 3 个变量


0
投票

感谢您在 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)

在我看来,你正在做两件事:

    1. val_ds
      变量重复(位置 2 和位置 3)。
    1. 您已经需要重复的
      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语言参考,以便找到任何带有函数的“拆包”示例,但我没有进行深入的研究,也许有一个关于拆包的示例,您可以理解发生了什么在引擎盖下。

© www.soinside.com 2019 - 2024. All rights reserved.