Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.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 使用TensorFlow从检查点重新启动培训后保留培训/验证拆分_Python_Tensorflow_Machine Learning - Fatal编程技术网

Python 使用TensorFlow从检查点重新启动培训后保留培训/验证拆分

Python 使用TensorFlow从检查点重新启动培训后保留培训/验证拆分,python,tensorflow,machine-learning,Python,Tensorflow,Machine Learning,我已经编写了一个TensorFlow训练循环,在每个历元结束时进行验证。在培训开始时,我将数据集划分为培训和验证子集(大约85%-15%的划分)。我的数据集实际上由存储在磁盘上的小块音频样本组成,在分割之前,我随机洗牌整个数据集,因此在训练和验证子集上得到完全均匀的分布。问题是,如果我从给定的检查点重新开始训练,随机洗牌会再次发生,我怀疑这可能会导致数据污染-验证阶段可能会处理网络已经训练过的数据集的位。我认为这会影响复训后的损失和训练的准确性,但这很难说 我在网上找不到关于这个特定问题的任何信

我已经编写了一个TensorFlow训练循环,在每个历元结束时进行验证。在培训开始时,我将数据集划分为培训和验证子集(大约85%-15%的划分)。我的数据集实际上由存储在磁盘上的小块音频样本组成,在分割之前,我随机洗牌整个数据集,因此在训练和验证子集上得到完全均匀的分布。问题是,如果我从给定的检查点重新开始训练,随机洗牌会再次发生,我怀疑这可能会导致数据污染-验证阶段可能会处理网络已经训练过的数据集的位。我认为这会影响复训后的损失和训练的准确性,但这很难说

我在网上找不到关于这个特定问题的任何信息,但我建议的解决方案是将验证拆分中的文件名缓存到一个文件中,如果重新启动,则从那里加载它们。有更好的解决办法吗


为清楚起见,我使用tf.data.Dataset API,通过一个简单的数据集管道构建训练和验证数据集,该管道从磁盘上的文件读取样本开始。

如果设置洗牌种子,顺序将是一致的:

import tensorflow as tf

for _ in range(5):
    ds = tf.data.Dataset.range(1, 10).shuffle(4, seed=42).batch(3)
    for i in ds:
        print(i)
    print()
因此,您所需要的只是每次按相同顺序排列的文件列表,您可以使用
tf.data.Dataset.list_files
,并设置
shuffle=False

ds = tf.data.Dataset.list_files(r'C:\Users\User\Downloads\*', shuffle=False)

如果设置洗牌种子,顺序将保持一致:

import tensorflow as tf

for _ in range(5):
    ds = tf.data.Dataset.range(1, 10).shuffle(4, seed=42).batch(3)
    for i in ds:
        print(i)
    print()
因此,您所需要的只是每次按相同顺序排列的文件列表,您可以使用
tf.data.Dataset.list_files
,并设置
shuffle=False

ds = tf.data.Dataset.list_files(r'C:\Users\User\Downloads\*', shuffle=False)

@Chris Thsnks-我不使用预打包的数据集,我只是使用tf.data数据集API。但我想我提出的解决方案与此相当,因为它似乎保证了一致性。照目前的情况,问题需要详细信息和清晰性-您刚才提供的详细信息应该已经在问题中了。@Chris Thsnks-我不使用预打包的数据集,我不使用tf.data数据集API。但我想我提出的解决方案与此相当,因为它似乎保证了一致性。因为问题需要细节和清晰性——你刚才提供的细节应该已经在问题中了。