عن المشروع

Sonnet هي مكتبة شبكات عصبية مفتوحة المصدر طورها باحثون في DeepMind، مصممة للعمل فوق TensorFlow 2. هدفها الأساسي هو توفير تجريدات بسيطة وقابلة للتركيب تسهل أبحاث التعلم الآلي في مجالات متنوعة، بما في ذلك التعلم الخاضع للإشراف وغير الخاضع للإشراف والتعلم المعزز. يدور نموذج البرمجة الأساسي في Sonnet حول فئة `snt.Module`. الوحدات هي وحدات مستقلة يمكنها الاحتفاظ بمراجع للمعلمات، ووحدات أخرى، وطرق. يضمن هذا التصميم فصل الوحدات عن بعضها البعض، مما يسمح بمرونة عالية في كيفية استخدامها. على عكس بعض الأطر، لا تفرض Sonnet حلقة تدريب محددة أو بنية مقيدة؛ بدلاً من ذلك، تشجع المستخدمين على بناء منطق التدريب الخاص بهم أو اعتماد حلول موجودة. تشمل الميزات الرئيسية: - **وحدات محددة مسبقًا**: تأتي Sonnet مع لبنات بناء شائعة مثل `snt.Linear` و `snt.Conv2D` و `snt.BatchNorm`، بالإضافة إلى شبكات مبنية مسبقًا مثل MLPs. - **وحدات مخصصة**: يُشجع المستخدمون على إنشاء فئات فرعية من `snt.Module` لإنشاء طبقات أو شبكات مخصصة. يوفر التصنيف الفرعي فوائد تلقائية مثل إدارة المعلمات (خصائص `variables` و `trainable_variables`)، ونطاقات الأسماء لتصور TensorBoard، ودعم نقاط التفتيش في TensorFlow. - **التسلسل**: تدعم المكتبة حفظ وتحميل النماذج عبر `pickle` في بايثون (على الرغم من عدم تشجيعه بسبب هشاشته) وعبر نقاط التفتيش الأصلية في TensorFlow وتنسيقات Saved Model. يسمح هذا بثبات النماذج ونشرها بشكل قوي. - **التدريب الموزع**: تقدم Sonnet دعمًا للتدريب الموزع باستخدام استراتيجيات توزيع TensorFlow المخصصة. تمنح المستخدمين تحكمًا كاملاً في متوسط التدرجات ومزامنة إحصائيات تطبيع الدفعات، بدلاً من دمج هذه السلوكيات تلقائيًا في المكتبة. يتطلب التثبيت TensorFlow 2 و TensorFlow Probability، متبوعًا بتثبيت `dm-sonnet`. تتوفر أمثلة عبر دفاتر Google Colab لمهام مثل تصنيف MNIST، وتدريب GAN، وتدريب CIFAR-10 الموزع.