Я использую Theano в первый раз, чтобы построить большую статистическую модель. Я выполняю своего рода стохастический градиентный спуск, но для каждого образца в мини-бассе мне нужно выполнить процедуру выборки для вычисления градиента. Есть ли способ в Theano для объединения градиентов, когда я выполняю процедуру выборки для каждого datapoint в мини-баре, и только после этого выполните обновление градиента?Как я могу объединить градиенты в Theano?
ответ
Я не понимаю, что вы подразумеваете под «пулом». Когда вы вычисляете градиент вашей стоимости по некоторым переменным, стоимость должна быть скаляром. Таким образом, при использовании мини-баров вам необходимо объединить отдельные затраты для примеров в мини-баре. Это может быть сделано суммой, средней, взвешенной суммой ... И тогда эта стоимость обратно распродажа. Градиент параметров этой стоимости будет соответствовать (математически) сумме/средней/взвешенной сумме отдельных градиентов (по каждому из примеров), но это не так, как это вычисляется. Градиент этой стоимости по промежуточным переменным, которые являются функциями входов (скрытые представления и т. Д.), Будет иметь тот же формат, что и исходная мини-камера, при этом градиент по каждому минибарабану в другой строке.
Итак, возможно, вы хотите выразить свою окончательную стоимость в результате вашей процедуры выборки, а затем назадпродвинуть градиент этой стоимости. Или, может быть, вы не хотите, чтобы backpropagate градиент истинной стоимости полностью, а backpropagate что-то, что зависит от градиента. В этом случае, вы можете сделать что-то вроде:
# minibatch of inputs
inputs = tt.matrix()
interm_result = f(input)
cost = g(interm_result).sum()
grad_wrt_interm_result = th.grad(cost, interm_result)
sampled_grad = sampling_procedure(grad_wrt_interm_result)
grad_wrt_params = th.grad(cost, params,
known_grads={inter_result: sampled_grad})
Таким образом, вы можете выполнить некоторые из прямого распространения на interm_result, а затем изменить градиент WRT inter_result к sampled_grad, а затем закончить в сторону обратного распространения параметров.
- 1. Объединить два RGB градиенты
- 2. Могу ли я смешивать градиенты в svg?
- 3. Могу ли я (выборочно) инвертировать градиенты Theano во время обратного распространения?
- 4. Как я могу объединить список?
- 5. Как я могу объединить код
- 6. Как я могу объединить NSAttributedStrings?
- 7. Как я могу объединить каналы в rabbitmq?
- 8. Как я могу «объединить вперед» в svn?
- 9. Как я могу объединить Муса в Комодо?
- 10. Как я могу объединить переменные в Stata
- 11. Как я могу объединить массив в Mysql
- 12. Как контролировать градиенты разделяемых переменных anano
- 13. Как я могу создать составную функцию с Theano?
- 14. Градиенты стека в -webkit-gradient
- 15. Как я могу объединить эти таблицы?
- 16. Wordpress - Как я могу объединить два изображения?
- 17. JQuery, как я могу объединить данные() объекты
- 18. Как я могу объединить эти числа?
- 19. Как я могу объединить Umbraco с CDN?
- 20. Как я могу объединить любой список? - JAVA
- 21. Как я могу объединить различные элементы списка?
- 22. Как я могу объединить два счетчика (пользовательские)
- 23. как я могу мерзавец объединить автоматический
- 24. Как я могу объединить чертежи uibezierpath?
- 25. Как я могу объединить эти две программы?
- 26. Как я могу объединить эти два утверждения?
- 27. Как я могу объединить N файлов
- 28. Как я могу объединить вложенные документы?
- 29. Как я могу объединить подзапрос MySQL
- 30. Как я могу объединить этот код jquery