Я пытаюсь написать функцию, которая может получать пакеты данных, аналогичную next_batch в tensorflow.
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
Я чувствую, что это естественный подход, но, хотя я могу получить точность 99%+ с классификацией, используя next_batch, я могу получить только около 50%, используя мою функцию «выборка».
Может ли кто-нибудь помочь мне понять, что происходит?