Drop the manually_create field from RnnState.
Initially, I thought that the shape of RNN state arrays could always be determined by shape propagation. Then I came across some graphs where this wasn't so easy to infer, so I introduced manually_create thinking of it as a hack. Today I took another look at dropping that hack, and had a "D'oh" moment when I realized that the cyclic nature of RNN graphs makes it impossible to infer the shapes of all arrays by usual propagation. For example, in a LSTM cell, the input array is concatenated with a state array, so if we don't already know the shape of that state array, shape propagation stops there. Thus, this change removes manually_create by making toco always behave as if manually_create=true, i.e. early-creating all RNN state arrays with the shape explicitly specified by the user. The next TODO item here (see model_flags.proto) is to introduce a generic 'shape' field, so far the current 'size' field only allows specifying 1-D shapes. PiperOrigin-RevId: 183294102
Loading
Please sign in to comment