【问题标题】:using zip and generator, how can I get a batch data使用 zip 和生成器,如何获取批处理数据
【发布时间】:2020-06-05 10:21:17
【问题描述】:

简单的示例代码是。

import numpy as np

x_train = np.array([[95, 50, 10, 5, 4], 
                    [85, 5, 100, 40, 3], 
                    [75, 50, 10, 30, 1],
                    [65, 50, 1, 20, 42],
                    [55, 500, 10, 10, 3],
                    [45, 50, 10, 110, 40]], dtype=np.float32) # training data

y_train = np.array([1,1,0,0,1,0]) # label 

train_data= list(zip(x_train, y_train)) # zip both data and lable

def batch_iter(data): # I make simple generator
    for i in range(len(data)) :
        yield data[i:i+1]

batches = batch_iter(train_data)

for i in range(len(x_train)):
    x, y = batches  # error happend   too many values to unpack (expected 2)
    x, y = zip(*batches) # error happend  not enough values to unpack (expected 2, got 1)

如何获取每次迭代的每个训练数据和标签??

谢谢。

【问题讨论】:

  • 当我做 x, y = next(batches) 时,仍然是同样的错误,没有足够的值来解包(预期 2,得到 1)

标签: iterator zip generator


【解决方案1】:

我像这样更改了代码,它运行良好。 我需要学习生成器和numpy。 请添加您的答案。 谢谢

x_train = np.array([[95, 50, 10, 5, 4], 
                    [85, 5, 100, 40, 3], 
                    [75, 50, 10, 30, 1],
                    [65, 50, 1, 20, 42],
                    [55, 500, 10, 10, 3],
                    [45, 50, 10, 110, 40]], dtype=np.float32)

y_train = np.array([1,1,0,0,1,0])

train_data= list(zip(x_train, y_train))

def batch_iter(data):
  data = np.array(data)
  for i in range(len(data)) :
    yield data[i:i+1]

batches = batch_iter(train_data)

x, y = zip(*next(batches))

【讨论】:

    猜你喜欢
    • 2019-06-12
    • 2021-05-26
    • 1970-01-01
    • 2016-11-14
    • 2012-11-17
    • 2014-01-14
    • 2018-08-05
    • 1970-01-01
    • 2022-07-28
    相关资源
    最近更新 更多