Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions _doc/articles/2025/2025-09-03-ensae.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
2025-09-03 : ENSAE
==================
2025-09-03 : ENSAE, Introduction et Attendus
============================================

**Objectif**

Expand Down
39 changes: 39 additions & 0 deletions _doc/articles/2025/2025-11-31-route2025.rst
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,45 @@ Séance 3

* numpy, broadcasting
* implémentation d'un chi-deux sans boucle
* comment implémenter la fonction `repeat_interleave
<https://docs.pytorch.org/docs/stable/generated/torch.repeat_interleave.html>`_
avec :epkg:`numpy` et sans boucle ?
En particulier cet exemple ``torch.repeat_interleave(y, torch.tensor([1, 2]), dim=0)``

Un problème... que fait la fonction suivante ?

.. code-block:: python

def reshape_keep0(arr, new_shape):
orig_shape = arr.shape
final_shape = []

for i, dim in enumerate(new_shape):
if dim == 0:
final_shape.append(orig_shape[i]) # garder dimension originale
else:
final_shape.append(dim)
return arr.reshape(tuple(final_shape))

Comment construire une fonction qui retourne l'argument ``new_shape``
quand on connaît les dimensions de départ et d'arrivée ?
La fonction doit valider les exemples suivants,
chaque dimension sous forme de chaîne de caractères peut prendre n'importe
quelle valeur.

.. code-block:: python

self.assertEqual((0, 1024, -1), align(("d1", 4, 256, "d2"), ("d1", 1024, "d2")))
self.assertEqual((0, 0, 1024), align(("d1", "d2", 4, 256), ("d1", "d2", 1024)))
self.assertEqual((6, -1), align((2, 3, "d1"), ("a", "d1")))
self.assertEqual((6, -1), align((2, 3, "d1"), (6, "d1")))
self.assertEqual((-1, 12, 196, 64), align(("d1", 196, 64), ("d2", 12, 196, 64)))
self.assertEqual((-1, 196, 64), align(("d1", 196, 64), ("d2", 196, 64)))
self.assertEqual((32, 196, 64), align((32, 196, 64), (32, 196, 64)))
self.assertEqual((4, 8, 196, 64), align((32, 196, 64), (4, 8, 196, 64)))
self.assertEqual((32, 196, 64), align((4, 8, 196, 64), (32, 196, 64)))
self.assertEqual((0, 196, 64), align(("d1", 196, 64), ("d1", 196, 64)))
self.assertEqual((0, 196, 2, 32), align(("d1", 196, 64), ("d1", 196, 2, 32)))

Séance 4
++++++++
Expand Down
6 changes: 4 additions & 2 deletions _doc/practice/years/2025/index.rst
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
.. _l-notebook-2025:

2025
====
2025 : notebooks créés en séances
=================================

.. toctree::
:maxdepth: 1

seance1_point2d
seance4_algo
seance5_algo2
294 changes: 294 additions & 0 deletions _doc/practice/years/2025/seance4_algo.ipynb

Large diffs are not rendered by default.

Loading
Loading