 
 
 
-
-func unique(scope:Scope,x: tf.OutputT :type, out_idx :type)  ->(y: tf.Output, idx: tf.Output){
-    if scope.error() != nil {
-        return
-    }
-    let opspec = tf.OpSpec(
-        Type: "Unique",
-        Input: [ x]
+func unique(scope:Scope,x: tf.Output, t :type  , outIdx :type  )  ->(y: tf.Output, idx: tf.Output){
+    if scope.error() != nil {
+        return
+    }
+
+    var attrs:Dictionary<String,Tensorflow_AttrValue> = [:]
+    attr.append("T":t)
+    attr.append("out_idx":outIdx)
+
+    let opspec = tf.OpSpec(
+        OpType: "Unique",
+        Input: [ x],
         Attrs: attrs
     )
     let op = scope.AddOperation(opspec)





func applyCenteredRMSProp(scope:Scope,`var`: tf.Output, mg: tf.Output, ms: tf.Output, mom: tf.Output, lr: tf.Output, rho: tf.Output, momentum: tf.Output, epsilon: tf.Output, grad: tf.OutputT :type, use_locking :bool)  ->(out: tf.Output){
    if scope.error() != nil {
        return
    }
    let opspec = tf.OpSpec(
        Type: "ApplyCenteredRMSProp",
        Input: [ `var`, mg, ms, mom, lr, rho, momentum, epsilon, grad]
        Attrs: attrs
    )
    let op = scope.AddOperation(opspec)




func const(scope:Scope value :tensor  , dtype :type  )  ->(output: tf.Output){
    if scope.error() != nil {
        return
    }

    var attrs:Dictionary<String,Tensorflow_AttrValue> = [:]
    attr.append("value":value)
    attr.append("dtype":dtype)

    let opspec = tf.OpSpec(
        OpType: "Const",
        Input: [ ],
        Attrs: attrs
    )
    let op = scope.AddOperation(opspec)
