@@ -0,0 +1,25 @@ | |||||
/***************************************************************************** | |||||
Copyright 2020 The TensorFlow.NET Authors. All Rights Reserved. | |||||
Licensed under the Apache License, Version 2.0 (the "License"); | |||||
you may not use this file except in compliance with the License. | |||||
You may obtain a copy of the License at | |||||
http://www.apache.org/licenses/LICENSE-2.0 | |||||
Unless required by applicable law or agreed to in writing, software | |||||
distributed under the License is distributed on an "AS IS" BASIS, | |||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
See the License for the specific language governing permissions and | |||||
limitations under the License. | |||||
******************************************************************************/ | |||||
using Tensorflow.Operations; | |||||
namespace Tensorflow | |||||
{ | |||||
public partial class tensorflow | |||||
{ | |||||
public bitwise_ops bitwise = new bitwise_ops(); | |||||
} | |||||
} |
@@ -0,0 +1,50 @@ | |||||
/***************************************************************************** | |||||
Copyright 2020 Haiping Chen. All Rights Reserved. | |||||
Licensed under the Apache License, Version 2.0 (the "License"); | |||||
you may not use this file except in compliance with the License. | |||||
You may obtain a copy of the License at | |||||
http://www.apache.org/licenses/LICENSE-2.0 | |||||
Unless required by applicable law or agreed to in writing, software | |||||
distributed under the License is distributed on an "AS IS" BASIS, | |||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||||
See the License for the specific language governing permissions and | |||||
limitations under the License. | |||||
******************************************************************************/ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Text; | |||||
using static Tensorflow.Binding; | |||||
namespace Tensorflow.Operations | |||||
{ | |||||
public class bitwise_ops | |||||
{ | |||||
/// <summary> | |||||
/// Elementwise computes the bitwise left-shift of `x` and `y`. | |||||
/// https://www.tensorflow.org/api_docs/python/tf/bitwise/left_shift | |||||
/// </summary> | |||||
/// <param name="x"></param> | |||||
/// <param name="y"></param> | |||||
/// <param name="name"></param> | |||||
/// <returns></returns> | |||||
public Tensor left_shift(Tensor x, Tensor y, string name = null) | |||||
{ | |||||
if (tf.Context.executing_eagerly()) | |||||
{ | |||||
var results = tf.Runner.TFE_FastPathExecute(tf.Context, tf.Context.DeviceName, | |||||
"LeftShift", name, | |||||
null, | |||||
x, y); | |||||
return results[0]; | |||||
} | |||||
var _op = tf.OpDefLib._apply_op_helper("LeftShift", name, args: new { x, y }); | |||||
return _op.output; | |||||
} | |||||
} | |||||
} |
@@ -0,0 +1,26 @@ | |||||
using Microsoft.VisualStudio.TestTools.UnitTesting; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using Tensorflow; | |||||
using static Tensorflow.Binding; | |||||
namespace TensorFlowNET.UnitTest.TF_API | |||||
{ | |||||
[TestClass] | |||||
public class BitwiseApiTest : TFNetApiTest | |||||
{ | |||||
Tensor lhs = tf.constant(new int[] { -1, -5, -3, -14 }); | |||||
Tensor rhs = tf.constant(new int[] { 5, 0, 7, 11 }); | |||||
[TestMethod] | |||||
public void LeftShift() | |||||
{ | |||||
var left_shift_result = tf.bitwise.left_shift(lhs, rhs); | |||||
var expected = new int[] { -32, -5, -384, -28672 }; | |||||
var actual = left_shift_result.ToArray<int>(); | |||||
Assert.IsTrue(Enumerable.SequenceEqual(expected, actual)); | |||||
} | |||||
} | |||||
} |