| @@ -542,32 +542,32 @@ or rank = 4. Had rank = {0}", rank)); | |||
| image_shape)); | |||
| } | |||
| var assert_ops = _CheckAtLeast3DImage(image, require_static: false); | |||
| var assert_ops = _CheckAtLeast3DImage(image, require_static: false).ToList(); | |||
| // batch: [0], height: [1], width: [2], depth: [3] | |||
| var bhwd = _ImageDimensions(image, rank: 4); | |||
| assert_ops[assert_ops.Length] = _assert(check_ops.assert_greater_equal(tf.constant(offset_height), | |||
| assert_ops.Add(_assert(check_ops.assert_greater_equal(tf.constant(offset_height), | |||
| tf.constant(0)), typeof(ValueError), | |||
| "offset_height must be >= 0."); | |||
| assert_ops[assert_ops.Length] = _assert(check_ops.assert_greater_equal(tf.constant(offset_width), | |||
| "offset_height must be >= 0.")); | |||
| assert_ops.Add(_assert(check_ops.assert_greater_equal(tf.constant(offset_width), | |||
| tf.constant(0)), typeof(ValueError), | |||
| "offset_width must be >= 0."); | |||
| assert_ops[assert_ops.Length] = _assert(check_ops.assert_less(tf.constant(0), | |||
| "offset_width must be >= 0.")); | |||
| assert_ops.Add(_assert(check_ops.assert_less(tf.constant(0), | |||
| tf.constant(target_width)), typeof(ValueError), | |||
| "target_width must be > 0."); | |||
| assert_ops[assert_ops.Length] = _assert(check_ops.assert_less(tf.constant(0), | |||
| "target_width must be > 0.")); | |||
| assert_ops.Add(_assert(check_ops.assert_less(tf.constant(0), | |||
| tf.constant(target_height)), typeof(ValueError), | |||
| "target_height must be > 0."); | |||
| assert_ops[assert_ops.Length] = _assert(check_ops.assert_greater_equal(tf.constant(bhwd[2]), | |||
| "target_height must be > 0.")); | |||
| assert_ops.Add(_assert(check_ops.assert_greater_equal(tf.constant(bhwd[2]), | |||
| tf.constant(target_width + offset_width)), | |||
| typeof(ValueError), | |||
| "width must be >= target + offset."); | |||
| assert_ops[assert_ops.Length] = _assert(check_ops.assert_greater_equal(tf.constant(bhwd[1]), | |||
| "width must be >= target + offset.")); | |||
| assert_ops.Add(_assert(check_ops.assert_greater_equal(tf.constant(bhwd[1]), | |||
| tf.constant(target_height + offset_height)), | |||
| typeof(ValueError), | |||
| "height must be >= target + offset."); | |||
| image = control_flow_ops.with_dependencies(assert_ops, image); | |||
| "height must be >= target + offset.")); | |||
| image = control_flow_ops.with_dependencies(assert_ops.ToArray(), image); | |||
| var cropped = array_ops.slice( | |||
| image, array_ops.stack(new[] { 0, offset_height, offset_width, 0 }), | |||
| @@ -575,12 +575,16 @@ or rank = 4. Had rank = {0}", rank)); | |||
| Shape cropped_shape_result() | |||
| { | |||
| long[] i_remnants = { }; | |||
| long[] i_remnants = new long[4]; | |||
| int idx = 0; | |||
| foreach (var i in new[] { bhwd[0], target_height, target_width, bhwd[3] }) | |||
| { | |||
| if (_is_tensor(i)) | |||
| return null; | |||
| i_remnants[idx] = -1; | |||
| else | |||
| i_remnants[i_remnants.Length] = i; | |||
| i_remnants[idx] = i; | |||
| idx++; | |||
| } | |||
| return new Shape(i_remnants); | |||
| }; | |||
| var cropped_shape = cropped_shape_result(); | |||