۴ کیو· سختپیشرفتهPYTHON۴ ثانیه · ۲۵۶ مگابایت
لایهی خطی با گذر رو به عقب
nn.Linear در PyTorch وزنی به شکل (out, in) دارد و برای دستهی (شکل ) حساب میکند:
هر لایه دو کار بلد است: forward خروجی را میسازد و هرچه برای مشتق لازم دارد نگه میدارد؛ backward(G) مشتق زیان نسبت به خروجیاش (، همشکل ) را میگیرد، مشتق پارامترهایش را ذخیره میکند، و مشتق نسبت به ورودیاش را برمیگرداند تا لایهی قبلی ادامه دهد:
ReLU و Sequential آمادهاند. کلاس Linear را کامل کنید. تابع layer_grads(X, W1, b1, W2, b2, G) شبکهی Linear → ReLU → Linear را میسازد، گذر رو به جلو را اجرا میکند، G را بهعنوان مشتق خروجی به عقب میفرستد، و اینها را پشتسرهم برمیگرداند: dW1 (سطر به سطر)، db1، dW2، db2 و dX — همان چیزی که PyTorch بعد از out.backward(G) در .grad ها میگذارد.
نمونهها
ورودی نمونه ۱
[[[0.35, 0.82], [0.33, -1.3], [0.91, 0.45]], [[-0.43, 0.46], [0.29, 0.24], [0.02, 0.44]], [-0.37, -0.08, -0.24], [[0.48, 0.03, -0.23]], [-0.39], [[-0.26], [0.01], [-0.28]]]
خروجی نمونه ۱
[0.0, 0.0, -0.0104, -0.0102, 0.0209, 0.049, 0.0, -0.0162, 0.0598, 0.0, -0.1385, -0.0332, -0.53, -0.0011, 0.0244, 0.0, 0.0, -0.0024, -0.002]
برای نوشتن پاسخ و دریافت امتیاز، ابتدا وارد حساب شوید.
ورود