Slide 44
Slide 44 text
std::tuple< std::vector< T >, std::vector< T > > backward(
const std::vector &A,
const std::vector &AWeights,
const std::vector &B,
const std::vector &BWeights,
T dist, T delta, T wdelta
) {
std::vector dAWeights( AWeights.size() );
std::vector dA( A.size() );
#pragma omp parallel for
for( size_t i = 0; i < A.size(); ++i ) {
auto modif_ = A;
modif_[ i ] += delta;
auto modified_dist = forward_x( modif_, AWeights, B, BWeights );
dA[ i ] = ( modified_dist - dist ) / delta;
}
#pragma omp parallel for
for( size_t i = 0; i < AWeights.size(); ++i ) {
auto modif_ = AWeights;
modif_[ i ] += wdelta;
auto modified_dist = forward_x( A, modif_, B, BWeights );
dAWeights[ i ] = ( modified_dist - dist ) / wdelta;
}
return std::make_tuple( dA, dAWeights );
}
ղੳతʹඍͰ͖ͳ͍ͳΒ
తʹඍ͢Εྑ͍