CodaLab.org ist (auch) eine Plattform für Wettbewerbsveranstaltungen. Sie können auch Ihren eigenen Server mit Open Source auf github veröffentlicht erstellen.
Ein Memorandum mit Know-how für die Durchführung von Wettbewerben bei CodaLab.org.
Klicken Sie hier für die Dokumentation:
Als Referenz Iris Beispiel Challenge. Laden Sie das Bundle von hier herunter (klicken Sie auf der Registerkarte "Learn the Details" auf "DOWNLOAD THE BUNDLE OF THE CHALLENGE") und schreiben Sie die yaml-Datei neu, um eine neue zu erstellen. Selbst wenn Sie es entsprechend schreiben, können Sie es später im Web ändern.
Das Bundle wird per Zip komprimiert und hochgeladen, der Ordner kann jedoch nicht komprimiert werden. Wenn Sie beim Entpacken der Zip-Datei nicht sicherstellen, dass nur die Datei ausgegeben wird, tritt ein Fehler auf.
Iris-Beispielherausforderung ist ein Code-Einreichungswettbewerb, daher ist es schwer zu sagen, was los ist. Das Folgende ist eine Übersicht.
submission
Metadaten geben den Befehl zur Codeausführung an.
metadata
command: python $program/cat.py $input $output
description: Compute scores for the competition
Datei, die zusammen eingereicht werden soll. Alles ist ok.
submission.txt
0
1
0
....
Die auszuführende Datei. Lesen Sie die Datei, die zusammen gesendet werden soll, aus run_dir, führen Sie sie aus und Schreiben Sie die resultierende Datei in output_dir (das später vom Evaluator aufgerufen wird).
cat.py
#!/usr/bin/env python
import os
from sys import argv
from shutil import copyfile
if __name__=="__main__":
if len(argv)==1:
input_dir = os.path.join('..', 'input')
output_dir = os.path.join('..', 'output')
else:
input_dir = argv[1]
output_dir = argv[2]
run_dir = os.path.abspath(".")
copyfile(os.path.join(run_dir, 'program', 'submission.txt'),
os.path.join(output_dir, 'submission.txt'))
Im obigen Beispiel wird die übermittelte Datei einfach nach output_dir kopiert.
Im Falle eines Code-Einreichungswettbewerbs können das Skript und das trainierte Modell zusammen eingereicht werden. In diesem Fall müssen die Testdaten (privat) in input_dir gelesen werden.
Metadaten geben den Befehl zur Codeausführung an.
metadata
command: python $program/evaluate.py $input $output
description: Compute scores for the competition
Die auszuführende Datei.
evaluate.py
#!/usr/bin/env python
import os
from sys import argv
import numpy as np
if __name__=="__main__":
if len(argv)==1:
input_dir = os.path.join('..', 'input')
output_dir = os.path.join('..', 'output')
else:
input_dir = argv[1]
output_dir = argv[2]
y_submit_file = os.path.join(input_dir, 'res', 'submission.txt')
y_ref_file = os.path.join(input_dir, 'ref', 'test_labels.csv')
load_y_ref = np.loadtxt(y_ref_file)
load_y_submission = np.loadtxt(y_submit_file)
score = np.abs(load_y_ref - load_y_submission).sum() / float(load_y_ref.size)
print("score: %.2f\n" % score)
score_file = open(os.path.join(output_dir, 'scores.txt'), 'w')
score_file.write("score: %.2f\n" % score)
score_file.close()
Der Betrieb des obigen Beispiels.
scores.txt
score: 0.98
Diese Ergebnisdatei wird auf der Rangliste angezeigt. Das Schlüsselwort "score:" wird in der yaml-Datei (oder in der Web-GUI) angegeben.
Derzeit schlägt der Code, der das neueste Modul verwendet, fehl, da die Version von Python und die Bibliothek des Moduls alt sind (Python ist 2).
Python-Modul 2017/02/14
Python version: 2.7.10 |Anaconda 2.4.0 (64-bit)| (default, Oct 19 2015, 18:04:42)
numpy==1.10.1
scikit-learn==0.16.1
scipy==0.16.0
Ich weiß nicht, ob es für etwas anderes als Python verwendet werden kann. Da der Server (laut Dokumentation) Windows zu sein scheint, ist es möglich, eine kompilierte Binärdatei hochzuladen. Wenn Sie das neueste Python-Modul verwenden möchten, andere Skripte in Ordnung sind usw., ist es besser, einen eigenen Server zu erstellen.
Aktivieren Sie einfach "Nur Ergebnisbewertung" in der Web-GUI.
Da die Übermittlung des Benutzers direkt in der Auswertung input_dir / res gespeichert wird, kann die Auswertung einfach durch Lesen, Lesen des wahren Werts von input_dir / ref, Auswerten und Schreiben in output_dir / score.txt erfolgen.
Hinweis: Auch wenn nur eine Übermittlungsdatei vorhanden ist, kann diese nur übermittelt werden, wenn sie in eine Zip-Datei komprimiert wurde.
Recommended Posts