Tugas Anda adalah membaca gambar yang mengandung digit tulisan tangan, mengenali dan mencetak digit tersebut.
Input: Gambar skala abu-abu 28 * 28, diberikan sebagai urutan 784 angka teks biasa dari 0 hingga 255, dipisahkan oleh spasi. 0 berarti putih dan 255 berarti hitam.
Output: Digit yang dikenali.
Penilaian: Saya akan menguji program Anda dengan 1000 gambar dari set pelatihan database MNIST (dikonversi ke bentuk ASCII). Saya sudah memilih gambar (secara acak), tetapi tidak akan menerbitkan daftar. Tes harus selesai dalam 1 jam, dan akan menentukan n
- jumlah jawaban yang benar.
n
minimal harus 200 agar program Anda memenuhi syarat. Jika ukuran kode sumber Anda s
, maka skor Anda akan dihitung sebagai s * (1200 - n) / 1000
. Skor terendah menang.
Aturan:
- Program Anda harus membaca gambar dari input standar dan menulis digit ke output standar
- Tidak ada fungsi OCR bawaan
- Tidak ada perpustakaan pihak ketiga
- Tidak ada sumber daya eksternal (file, program, situs web)
- Program Anda harus dapat dijalankan di Linux menggunakan perangkat lunak yang tersedia secara bebas (Wine dapat diterima jika perlu)
- Kode sumber harus hanya menggunakan karakter ASCII
- Silakan kirim perkiraan skor Anda dan nomor versi unik setiap kali Anda mengubah jawaban Anda
Input contoh:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 18 18 18 126 136 175 26 166 255 247 127 0 0 0 0 0 0 0 0 0 0 0 0 30 36 94 154 170 253 253 253 253 253 225 172 253 242 195 64 0 0 0 0 0 0 0 0 0 0 0 49 238 253 253 253 253 253 253 253 253 251 93 82 82 56 39 0 0 0 0 0 0 0 0 0 0 0 0 18 219 253 253 253 253 253 198 182 247 241 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 80 156 107 253 253 205 11 0 43 154 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14 1 154 253 90 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 139 253 190 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11 190 253 70 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 35 241 225 160 108 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 81 240 253 253 119 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 45 186 253 253 150 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 16 93 252 253 187 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 249 253 249 64 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 46 130 183 253 253 207 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 39 148 229 253 253 253 250 182 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 24 114 221 253 253 253 253 201 78 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 66 213 253 253 253 253 198 81 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 18 171 219 253 253 253 253 195 80 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 55 172 226 253 253 253 253 244 133 11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 136 253 253 253 212 135 132 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Omong-omong, jika Anda menambahkan baris ini ke input:
P2 28 28 255
Anda akan mendapatkan file gambar yang valid dalam format pgm, dengan warna terbalik / dinegasikan.
Seperti inilah warna yang benar:
Contoh output:
5
Klasemen:
No.| Name | Language | Alg | Ver | n | s | Score
----------------------------------------------------------------
1 | Peter Taylor | GolfScript | 6D | v2 | 567 | 101 | 63.933
2 | Peter Taylor | GolfScript | 3x3 | v1 | 414 | 207 | 162.702
Jawaban:
GolfScript 6D (v2: estimasi skor 101 * 0.63 ~ = 64)
Ini adalah pendekatan yang sangat berbeda dengan jawaban GolfScript saya sebelumnya, jadi lebih masuk akal untuk mempostingnya sebagai jawaban terpisah di v1 daripada mengedit jawaban lain dan membuat v2 ini.
Tidak disatukan
Penjelasan
Masalah utamanya adalah klasifikasi titik dalam ruang 784 dimensi. Salah satu pendekatan standar adalah pengurangan dimensi: mengidentifikasi subset kecil dari dimensi yang memberikan kekuatan pembeda yang cukup untuk melakukan klasifikasi. Saya mengevaluasi setiap dimensi dan setiap kemungkinan ambang untuk mengidentifikasi 18 pasang (dimensi, rentang ambang) yang tampak menjanjikan. Saya kemudian memilih pusat setiap rentang ambang, dan mengevaluasi himpunan bagian 6 elemen dari 18 pasang. Akhirnya saya mengoptimalkan ambang untuk setiap dimensi proyeksi 6-D terbaik, meningkatkan akurasinya dari 56,3% menjadi 56,6%.
Karena proyeksi menjadi 6 dimensi dan untuk setiap dimensi saya menerapkan ambang sederhana, tabel pencarian terakhir hanya membutuhkan 64 elemen. Tampaknya tidak terlalu kompresibel, jadi main golf adalah untuk melakukan konversi basis-tabel kedua pencarian (daftar dimensi dan ambang batas; dan vektor halfspace ke digit peta) dan membagikan kode konversi-dasar.
sumber
GolfScript 3x3 (v1: estimasi skor 207 * 0.8 ~ = 166)
Atau dalam ikhtisar,
Penjelasan
Pendekatan saya di tingkat tinggi adalah:
t1
maka atur ke1
; sebaliknya untuk0
.t2
maka nilai grup sebagai1
; jika tidak0
.t1
dant2
biarkan antara 50% dan 63% dari tabel sebagai nilai "tidak peduli", yang dapat dikombinasikan dengan nilai yang berdekatan untuk meningkatkan run lengths; rata-rata run length dalam tabel v1 saya adalah 3.6).Ternyata pengaturan itu
t1=t2=0
, meskipun tidak optimal, tidak jauh dari nilai terbaikt1
dant2
dalam hal akurasi; cukup baik dalam hal kompresibilitas tabel; dan memungkinkan saya untuk menggabungkan dua operasi ambang ke dalam[]*0-!!
(ratakan 2D array ke 1D; hapus0
s; periksa apakah itu kosong).Tabel pencarian memberikan kandidat yang paling mungkin untuk vektor skor kelompok yang diberikan. Dimungkinkan untuk meningkatkan skor dengan mengidentifikasi entri tabel yang dapat diubah sedemikian rupa sehingga peningkatan kompresibilitas tabel melebihi akurasi yang menurun.
sumber