CodaLab.org est une plateforme de concours (également). Vous pouvez également créer votre propre serveur avec Open source publié sur github.
Un mémorandum de savoir-faire pour la tenue de concours sur CodaLab.org.
Cliquez ici pour la documentation:
Pour référence, Iris example challenge. Téléchargez le bundle à partir d'ici (cliquez sur "TÉLÉCHARGER LE BUNDLE OF THE CHALLENGE" dans l'onglet "Learn the Details") et réécrivez le fichier yaml pour en créer un nouveau. Même si vous l'écrivez correctement, vous pouvez le modifier ultérieurement sur le Web.
Le bundle est compressé et téléchargé, mais il n'est pas possible de compresser le dossier. Si vous ne vous assurez pas que seul le fichier sort lorsque vous décompressez le zip, une erreur se produira.
Iris example challenge est un concours de soumission de code, il est donc difficile de dire ce qui se passe. Voici un aperçu.
submission
metadata spécifie la commande d'exécution du code.
metadata
command: python $program/cat.py $input $output
description: Compute scores for the competition
Dossier à soumettre ensemble. Tout est OK.
submission.txt
0
1
0
....
Le fichier à exécuter. Lisez le fichier à soumettre ensemble à partir de run_dir, exécutez-le et Ecrivez le fichier résultant dans output_dir (qui sera appelé ultérieurement par l'évaluateur)
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'))
Dans l'exemple ci-dessus, le fichier soumis est simplement copié dans output_dir.
Dans le cas d'un concours de soumission de code, le script et le modèle entraîné peuvent être soumis ensemble. Dans ce cas, il est nécessaire de lire les données de test (privées) dans input_dir.
metadata spécifie la commande d'exécution du code.
metadata
command: python $program/evaluate.py $input $output
description: Compute scores for the competition
Le fichier à exécuter.
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()
Le fonctionnement de l'exemple ci-dessus.
scores.txt
score: 0.98
Ce fichier de résultat est affiché sur le tableau des leaders. Le mot-clé "score:" est spécifié dans le fichier yaml (ou dans l'interface graphique Web).
Actuellement, le code qui utilise le dernier module échoue car la version de python et la bibliothèque du module sont anciennes (python vaut 2).
module python 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
Je ne sais pas s'il peut être utilisé pour autre chose que python. Puisque le serveur semble être Windows (selon la documentation), il est possible de télécharger un fichier binaire compilé. Si vous souhaitez utiliser le dernier module python, d'autres scripts sont OK, etc., il est préférable de créer votre propre serveur.
Cochez simplement "Résultats uniquement" dans l'interface graphique Web.
Puisque la soumission de l'utilisateur est enregistrée directement dans l'évaluation input_dir / res, l'évaluation peut être effectuée simplement en la lisant, en lisant la vraie valeur de input_dir / ref, en l'évaluant et en l'écrivant dans output_dir / scores.txt.
Remarque: même s'il n'y a qu'un seul fichier de soumission, il ne peut être soumis que s'il est compressé au zip dans un fichier zip.
Recommended Posts