{"push_id":2654978426,"size":1,"distinct_size":1,"ref":"refs/heads/pr/zero_free_derivatives","head":"c52fb0e7341f12a4a1bbeeba5352393b4522072c","before":"6f25830614048954d7a99baaeb079137ffbef07e","commits":[{"sha":"c52fb0e7341f12a4a1bbeeba5352393b4522072c","author":{"name":"Zach DeVito","email":"ffbacb804f60e1eea39c96029c00fe9a377f84d7@fb.com"},"message":"Allow autograd to work even when the shape of values cannot be determined\n\nThis commit implements the solution proposed in https://github.com/pytorch/pytorch/issues/8410\nto workaround the need to create zero tensors with the same shape as inputs.\nIt introduces the concept of a LinearBlock which marks places in the code\nwhere we know if all the inputs to the node are zero, then the outputs\nto the node are also zero. Autodiff introduces LinearBlocks around\nbackwards functions, which have this property. specializeUndef then\npropagates Undef nodes using this information.\n\nNotes:\n* Since we do not always specialize, we have a pass LowerLinearBlocks\nthat replaces the block with an if statement that dynamically guards\nthe Undef case.\n* We introduce AutogradAdd which is addition that still works when\nits inputs might be undefined. In cases where we specialize this will\nget removed in favor of a normal add, but there are cases where\ngradient graphs do not specialize (e.g. when they are not differentiable,\nbut a derivative is required) so it is important for this op to be executable.","distinct":true,"url":"https://api.github.com/repos/zdevito/pytorch/commits/c52fb0e7341f12a4a1bbeeba5352393b4522072c"}]}
{"actor":{"display_login":"zdevito"}}