priteshgudge / language-translation-tensorflow

Language translation using sequence to sequence technique from deep learning
5 stars 1 forks source link

problem with encoding_layer() #1

Open Mhuchya opened 6 years ago

Mhuchya commented 6 years ago

InvalidArgumentError Traceback (most recent call last) F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\framework\ops.py in _create_c_op(graph, node_def, inputs, control_inputs) 1566 try: -> 1567 c_op = c_api.TF_FinishOperation(op_desc) 1568 except errors.InvalidArgumentError as e:

InvalidArgumentError: Dimensions must be equal, but are 1024 and 1512 for 'rnn/while/rnn/multi_rnn_cell/cell_0/basic_lstm_cell/MatMul_1' (op: 'MatMul') with input shapes: [64,1024], [1512,2048].

During handling of the above exception, another exception occurred:

ValueError Traceback (most recent call last)

in () 19 DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE 20 """ ---> 21 tests.test_encoding_layer(encoding_layer) ~\New folder (2)\language-translation-tensorflow\problem_unittests.py in test_encoding_layer(encoding_layer) 107 rnn_inputs = tf.placeholder(tf.float32, [batch_size, 22, 1000]) 108 keep_prob = tf.placeholder(tf.float32) --> 109 states = encoding_layer(rnn_inputs, rnn_size, num_layers, keep_prob) 110 111 assert len(states) == num_layers,\ in encoding_layer(rnn_inputs, rnn_size, num_layers, keep_prob) 12 # Encoder 13 enc_cell = tf.contrib.rnn.MultiRNNCell([tf.contrib.rnn.BasicLSTMCell(rnn_size)] * num_layers) ---> 14 _, enc_state = tf.nn.dynamic_rnn(enc_cell, rnn_inputs, dtype=tf.float32) 15 return enc_state 16 F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\ops\rnn.py in dynamic_rnn(cell, inputs, sequence_length, initial_state, dtype, parallel_iterations, swap_memory, time_major, scope) 625 swap_memory=swap_memory, 626 sequence_length=sequence_length, --> 627 dtype=dtype) 628 629 # Outputs of _dynamic_rnn_loop are always shaped [time, batch, depth]. F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\ops\rnn.py in _dynamic_rnn_loop(cell, inputs, initial_state, parallel_iterations, swap_memory, sequence_length, dtype) 822 parallel_iterations=parallel_iterations, 823 maximum_iterations=time_steps, --> 824 swap_memory=swap_memory) 825 826 # Unpack final output if not using output tuples. F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\ops\control_flow_ops.py in while_loop(cond, body, loop_vars, shape_invariants, parallel_iterations, back_prop, swap_memory, name, maximum_iterations) 3222 if loop_context.outer_context is None: 3223 ops.add_to_collection(ops.GraphKeys.WHILE_CONTEXT, loop_context) -> 3224 result = loop_context.BuildLoop(cond, body, loop_vars, shape_invariants) 3225 if maximum_iterations is not None: 3226 return result[1] F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\ops\control_flow_ops.py in BuildLoop(self, pred, body, loop_vars, shape_invariants) 2954 with ops.get_default_graph()._lock: # pylint: disable=protected-access 2955 original_body_result, exit_vars = self._BuildLoop( -> 2956 pred, body, original_loop_vars, loop_vars, shape_invariants) 2957 finally: 2958 self.Exit() F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\ops\control_flow_ops.py in _BuildLoop(self, pred, body, original_loop_vars, loop_vars, shape_invariants) 2891 flat_sequence=vars_for_body_with_tensor_arrays) 2892 pre_summaries = ops.get_collection(ops.GraphKeys._SUMMARY_COLLECTION) # pylint: disable=protected-access -> 2893 body_result = body(*packed_vars_for_body) 2894 post_summaries = ops.get_collection(ops.GraphKeys._SUMMARY_COLLECTION) # pylint: disable=protected-access 2895 if not nest.is_sequence(body_result): F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\ops\control_flow_ops.py in (i, lv) 3192 cond = lambda i, lv: ( # pylint: disable=g-long-lambda 3193 math_ops.logical_and(i < maximum_iterations, orig_cond(*lv))) -> 3194 body = lambda i, lv: (i + 1, orig_body(*lv)) 3195 3196 if context.executing_eagerly(): F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\ops\rnn.py in _time_step(time, output_ta_t, state) 793 skip_conditionals=True) 794 else: --> 795 (output, new_state) = call_cell() 796 797 # Pack state if using state tuples F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\ops\rnn.py in () 779 780 input_t = nest.pack_sequence_as(structure=inputs, flat_sequence=input_t) --> 781 call_cell = lambda: cell(input_t, state) 782 783 if sequence_length is not None: F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\ops\rnn_cell_impl.py in __call__(self, inputs, state, scope) 230 setattr(self, scope_attrname, scope) 231 with scope: --> 232 return super(RNNCell, self).__call__(inputs, state) 233 234 def _rnn_get_variable(self, getter, *args, **kwargs): F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\layers\base.py in __call__(self, inputs, *args, **kwargs) 715 716 if not in_deferred_mode: --> 717 outputs = self.call(inputs, *args, **kwargs) 718 if outputs is None: 719 raise ValueError('A layer\'s `call` method should return a Tensor ' F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\ops\rnn_cell_impl.py in call(self, inputs, state) 1290 [-1, cell.state_size]) 1291 cur_state_pos += cell.state_size -> 1292 cur_inp, new_state = cell(cur_inp, cur_state) 1293 new_states.append(new_state) 1294 F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\ops\rnn_cell_impl.py in __call__(self, inputs, state, scope, *args, **kwargs) 337 # method. See the class docstring for more details. 338 return base_layer.Layer.__call__(self, inputs, state, scope=scope, --> 339 *args, **kwargs) 340 341 F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\layers\base.py in __call__(self, inputs, *args, **kwargs) 715 716 if not in_deferred_mode: --> 717 outputs = self.call(inputs, *args, **kwargs) 718 if outputs is None: 719 raise ValueError('A layer\'s `call` method should return a Tensor ' F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\ops\rnn_cell_impl.py in call(self, inputs, state) 618 619 gate_inputs = math_ops.matmul( --> 620 array_ops.concat([inputs, h], 1), self._kernel) 621 gate_inputs = nn_ops.bias_add(gate_inputs, self._bias) 622 F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\ops\math_ops.py in matmul(a, b, transpose_a, transpose_b, adjoint_a, adjoint_b, a_is_sparse, b_is_sparse, name) 2120 else: 2121 return gen_math_ops.mat_mul( -> 2122 a, b, transpose_a=transpose_a, transpose_b=transpose_b, name=name) 2123 2124 F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\ops\gen_math_ops.py in mat_mul(a, b, transpose_a, transpose_b, name) 4565 _, _, _op = _op_def_lib._apply_op_helper( 4566 "MatMul", a=a, b=b, transpose_a=transpose_a, transpose_b=transpose_b, -> 4567 name=name) 4568 _result = _op.outputs[:] 4569 _inputs_flat = _op.inputs F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\framework\op_def_library.py in _apply_op_helper(self, op_type_name, name, **keywords) 785 op = g.create_op(op_type_name, inputs, output_types, name=scope, 786 input_types=input_types, attrs=attr_protos, --> 787 op_def=op_def) 788 return output_structure, op_def.is_stateful, op 789 F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\framework\ops.py in create_op(self, op_type, inputs, dtypes, input_types, name, attrs, op_def, compute_shapes, compute_device) 3390 input_types=input_types, 3391 original_op=self._default_original_op, -> 3392 op_def=op_def) 3393 3394 # Note: shapes are lazily computed with the C API enabled. F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\framework\ops.py in __init__(self, node_def, g, inputs, output_types, control_inputs, input_types, original_op, op_def) 1732 op_def, inputs, node_def.attr) 1733 self._c_op = _create_c_op(self._graph, node_def, grouped_inputs, -> 1734 control_input_ops) 1735 else: 1736 self._c_op = None F:\Anaconda2\envs\tensorflow\lib\site-packages\tensorflow\python\framework\ops.py in _create_c_op(graph, node_def, inputs, control_inputs) 1568 except errors.InvalidArgumentError as e: 1569 # Convert to ValueError for backwards compatibility. -> 1570 raise ValueError(str(e)) 1571 1572 return c_op ValueError: Dimensions must be equal, but are 1024 and 1512 for 'rnn/while/rnn/multi_rnn_cell/cell_0/basic_lstm_cell/MatMul_1' (op: 'MatMul') with input shapes: [64,1024], [1512,2048]. can this error is due to the tensorflow version 1.8.0?
priteshgudge commented 6 years ago

################ _> 1567 c_op = c_api.TF_FinishOperation(op_desc) 1568 except errors.InvalidArgumentError as e:

InvalidArgumentError: Dimensions must be equal, but are 1024 and 1512 for 'rnn/while/rnn/multi_rnn_cell/cell_0/basic_lstm_cell/MatMul1' (op: 'MatMul') with input shapes: [64,1024], [1512,2048].

############### I don't think it has anything to do with tensorflow. My take is, you should assert(or log) the transformation and the matrix/multidimension array sizes before passing them further into the flow.