【问题标题】:Create X_test, X_train, Y_test, Y_train in tensorflow在tensorflow中创建X_test、X_train、Y_test、Y_train
【发布时间】:2021-05-09 04:02:21
【问题描述】:

我有以下方案:

training_filenames = filenames[split:]
validation_filenames = filenames[:split]

见:https://colab.research.google.com/github/GoogleCloudPlatform/training-data-analyst/blob/master/courses/fast-and-lean-data-science/04_Keras_Flowers_transfer_learning_solution.ipynb#scrollTo=M3G-2aUBQJ-H

现在我想创建x_trainy_trainx_testy_test(用于Hyperparameter Tuning)。它是如何正确完成的?

有不同的类可用 (CLASSES = ['daisy', 'dandelion', 'roses', 'sunflowers', 'tulips'])

【问题讨论】:

  • 如果您拆分training_filenames,那么您将拥有y_trainy_test。当您加载图像时,它们将是x_trainx_test
  • filenames 中有什么?你有图片的名字jpgpng吗?你能用names作为标签吗?
  • 我检查了你的链接,你应该首先使用 load_dataset() 加载所有文件,这给数据集提供了 image, label - 然后你可以尝试将其拆分为 traintest 和更高版本将train 拆分为x_train = train.image, y_train = train.label

标签: python tensorflow


【解决方案1】:

似乎课程并不那么重要。我假设每个文件都包含一个图像和一个标签(从您引用的示例中看起来很像)。据我了解,您不仅需要训练和验证数据,还需要训练、验证和测试数据。

你应该可以这样做:

# splits of your choice; this split leaves 10% of testing data
TRAINING_SPLIT = .7
VALIDATION_SPLIT = .2

training_filenames = filenames[:int(len(filenames) * TRAINING_SPLIT)]
validation_filenames = filenames[int(len(filenames) * TRAINING_SPLIT):int(len(filenames) * (TRAINING_SPLIT + VALIDATION_SPLIT))]
testing_filenames = filenames[int(len(filenames) * (TRAINING_SPLIT + VALIDATION_SPLIT)):]

然后您可以像示例中那样继续读取数据。完成后,如果需要,您应该能够提取 X(图像)和 y(标签)数据。

【讨论】:

  • 好吧,抱歉,也许我的帖子有点混乱。我理解你的代码,这对我来说很清楚。但我想有以下结构: fashion_mnist = tf.keras.datasets.fashion_mnist (x_train, y_train),(x_test, y_test) = fashion_mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 所以我想要 x_train和 x_test(还有 y_train 和 y_test)从您发布的代码中(我只需要培训和测试,不需要验证)
  • 我确实误解了这个问题。
【解决方案2】:

要将数据作为 NumPy 数组获取,您应该首先使用示例中的 load_dataset() 函数加载数据。这将返回 tf.data.TFRecordDataset (doc)。查看您示例中的 display utilities 代码,有一个函数可以完全按照您的意愿执行操作,只是它只提取第一个 N 输入-输出对:

def dataset_to_numpy_util(dataset, N):
  dataset = dataset.batch(N)
  
  for images, labels in dataset:
    numpy_images = images.numpy()
    numpy_labels = labels.numpy()
    break;

  return numpy_images, numpy_labels

您应该能够做到以下几点:

X_train, y_train = dataset_to_numpy_util(load_dataset(training_filenames), len(training_filenames))
X_test, y_test = dataset_to_numpy_util(load_dataset(testing_filenames), len(testing_filenames))

【讨论】:

    猜你喜欢
    • 2020-06-23
    • 2021-01-13
    • 2021-02-15
    • 2019-06-17
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 2022-09-23
    相关资源
    最近更新 更多