I’m defining modelf and I suspect I am not getting right the variables for one_step_attention call
or the Bidirectional(LSTM(...))(X)
call.
I have printed the dimensions for a
and s
to see how to go about slicing using t
for every Ty
and maybe there’s something I’m missing. If I can remove the ‘None’ rank from the tensors, my slice of ‘a’ could match the rank and shape of ‘s’.
a dim : 3
s dim : 2
a shape = (None, 30, 64)
s shape = (None, 64)
a[:,0,:] shape = (None, 64)
s[0] shape = (64,)
This is the error I’m getting:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-27-cf0a64ed59c0> in <module>
35
36
---> 37 modelf_test(modelf)
<ipython-input-27-cf0a64ed59c0> in modelf_test(target)
12
13
---> 14 model = target(Tx, Ty, n_a, n_s, len_human_vocab, len_machine_vocab)
15
16 print(summary(model))
<ipython-input-26-b2337de09fe4> in modelf(Tx, Ty, n_a, n_s, human_vocab_size, machine_vocab_size)
49
50 # Step 2.A: Perform one step of the attention mechanism to get back the context vector at step t (≈ 1 line)
---> 51 context = one_step_attention(a, s[t-1])
52
53 # Step 2.B: Apply the post-attention LSTM cell to the "context" vector. (≈ 1 line)
<ipython-input-9-0faf1fc1147e> in one_step_attention(a, s_prev)
17 ### START CODE HERE ###
18 # Use repeator to repeat s_prev to be of shape (m, Tx, n_s) so that you can concatenate it with all hidden states "a" (≈ 1 line)
---> 19 s_prev = repeator(s_prev)
20 # Use concatenator to concatenate a and s_prev on the last axis (≈ 1 line)
21 # For grading purposes, please list 'a' first and 's_prev' second, in this order.
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py in __call__(self, *args, **kwargs)
924 if _in_functional_construction_mode(self, inputs, args, kwargs, input_list):
925 return self._functional_construction_call(inputs, args, kwargs,
--> 926 input_list)
927
928 # Maintains info about the `Layer.call` stack.
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py in _functional_construction_call(self, inputs, args, kwargs, input_list)
1090 # TODO(reedwm): We should assert input compatibility after the inputs
1091 # are casted, not before.
-> 1092 input_spec.assert_input_compatibility(self.input_spec, inputs, self.name)
1093 graph = backend.get_graph()
1094 # Use `self._name_scope()` to avoid auto-incrementing the name.
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/input_spec.py in assert_input_compatibility(input_spec, inputs, layer_name)
178 'expected ndim=' + str(spec.ndim) + ', found ndim=' +
179 str(ndim) + '. Full shape received: ' +
--> 180 str(x.shape.as_list()))
181 if spec.max_ndim is not None:
182 ndim = x.shape.ndims
ValueError: Input 0 of layer repeat_vector is incompatible with the layer: expected ndim=2, found ndim=1. Full shape received: [64]