SQL Server 2005 и выше
SELECT
SCHEMA_NAME(obj.schema_id) AS schema_name,
obj.name AS proc_name
FROM
sys.procedures obj WITH(NOLOCK)
ORDER BY
schema_name,
proc_name
SQL Server 2000
SELECT
USER_NAME(obj.uid) AS user_name,
obj.name AS proc_name,
FROM
sysobjects obj WITH(NOLOCK)
WHERE
(obj.status & 0x80000000) = 0
AND RTRIM(obj.xtype) IN ('P', 'RF')
ORDER BY
user_name,
proc_name
Когда вы вызываете backward
(в качестве функции или метода для тензора), градиенты операндов с requires_grad == True
вычисляются относительно тензора, который вы назвали backward
. Эти градиенты накапливаются в свойстве .grad
этих операндов. Если один и тот же операнд A
появляется в выражении несколько раз, вы можете концептуально рассматривать их как отдельные сущности A1
, A2
... для алгоритма обратного распространения и только в конце суммировать их градиенты так, чтобы A.grad = A1.grad + A2.grad + ...
.
Теперь, строго говоря, ответ на ваш вопрос
Я хочу знать, что происходит с middle_linear weight при каждом обратном
blockquote>это: ничего.
backward
не изменяет веса, только вычисляет градиент. Чтобы изменить вес, вам нужно выполнить шаг оптимизации, возможно, используя один из оптимизаторов вtorch.optim
. Затем веса обновляются в соответствии с их свойством.grad
, поэтому, если ваш операнд использовался несколько раз, он будет обновляться в соответствии с суммой градиентов в каждом из его применений.Другими словами, если ваш матричный элемент
x
имеет положительный градиент при первом применении и отрицательный при использовании во второй раз, может случиться так, что чистые эффекты отменится и останется как есть (или изменится только немного). Если оба приложения требуют, чтобы значениеx
было выше, оно повысится больше, чем если бы оно использовалось только один раз и т. Д.