readEntireFile($csvReader); $this->reset(); } private function readEntireFile(CsvReader $reader): void { while ($line = $reader->readNextLine()) { $newLine = []; foreach ($line as $value) { // Transform to float $newLine[] = (float) $value; } $this->lines[] = $newLine; } } public function getNextLine(): ?array { if (! isset($this->currentLines[0])) { return null; // No more lines to read } $this->lastReadLineIndex = array_search($this->currentLines[0], $this->lines, true); return array_shift($this->currentLines); } public function getInputSize(): int { return count($this->lines[0]) - 1; // Don't count the label } public function reset(): void { $this->currentLines = $this->lines; } public function getLastReadLineIndex(): int { return $this->lastReadLineIndex; } public function getEpochExamplesCount(): int { return count($this->lines); } }