tensorflow next_batch 与自定义 next_batch?

tensorflow next_batch vs custom next_batch?

我正在尝试编写一个可以获取批量数据的函数,类似于 tensorflow 的 next_batch。

next_batch 可以在这里看到: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/learn/python/learn/datasets/mnist.py

这是我写的代码。

class Sampler:

def __init__(self, data):        
    self.x, self.y = data
    self.N, = self.y.shape
    self.start = 0
    self.shuffle = np.arange(self.N)
    np.random.shuffle(self.shuffle)
    self.x = self.x[self.shuffle]
    self.y = self.y[self.shuffle]

def sample(self, s):
    start = self.start
    end = np.minimum(start+s, self.N)
    data = (self.x[start:end], self.y[start:end])
    self.start += s   
    if self.start >= self.N - 1:
        self.start = 0
        np.random.shuffle(self.shuffle)
        self.x = self.x[self.shuffle]
        self.y = self.y[self.shuffle]
    return data

我觉得这是一种自然的方法,但是虽然我可以通过使用 next_batch 的分类获得 99% 以上的准确率,但使用我的 "sample" 函数只能获得大约 50% 的准确率。

谁能帮我理解这是怎么回事?

从我的评论直接cp但是...

据我所知,您的代码与 mnist 示例中的 next_batch 函数几乎完全相同。唯一的区别是示例中的 DataSet class 将输入数据从 (x,y,z,1) 展平为 (x,y*z),然后还将所有数据从 [0,256] 归一化为 [0 ,1].这些都不会立即影响准确性,但取决于您的训练方式,它们可能会产生影响。