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].这些都不会立即影响准确性,但取决于您的训练方式,它们可能会产生影响。