Ich versuche, ein wirklich großes Dataset (~ 28 GB RAM in einem NDarray) den freigegebenen Variablen zuzuteilen, wobei borrow = True verwendet wird, um die Replikation des Speichers zu vermeiden. Um dies zu tun, verwende ich die folgende Funktion:Nicht genügend Speicher beim Erstellen einer gemeinsam genutzten Theano-Variable mit borrow = True
def load_dataset(path):
# Load dataset from memory
data_f = np.load(path+'train_f.npy')
data_t = np.load(path+'train_t.npy')
# Split into training and validation
return (
(
theano.shared(data_f[:-1000, :], borrow=True),
theano.shared(data_t[:-1000, :], borrow=True)
), (
theano.shared(data_f[-1000:, :], borrow=True),
theano.shared(data_t[-1000:, :], borrow=True)
)
)
Um Datenkonvertierungen zu vermeiden, bevor die Arrays auf der Festplatte retten I definierte sie bereits im richtigen Format zu sein (danach füllt sie und sie in Platte mit np.save Dumping()):
data_f = np.ndarray((len(rows), 250*250*3), dtype=theano.config.floatX)
data_t = np.ndarray((len(rows), 1), dtype=theano.config.floatX)
Es scheint aber, dass Theanos Reifen die Speicher ohnehin zu replizieren, mir die folgenden Fehler Dumping:
Fehler 25594500000 Bytes Gerät Zuweisen Speicher (nicht genügend Speicher). Treiberbericht 3775729664 Bytes frei und 4294639616 Bytes insgesamt.
Theano ist konfiguriert, um auf der GPU (GTX 970) zu arbeiten.