All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ergentOrder.onnx-scala_2.12.0.3.0.source-code.ONNX212.scala Maven / Gradle / Ivy

package org.emergentorder

import scala.language.higherKinds
import scala.{specialized => sp}
import spire.math.UByte
import spire.math.UShort
import spire.math.UInt
import spire.math.ULong
import spire.math.Complex
import spire.math.Numeric
import spire.implicits._
import spire.algebra.Field
import scala.reflect.ClassTag
import org.bytedeco.onnx.ModelProto
package object onnx {

  type ![A]  = A => Nothing
  type !![A] = ![![A]]

  trait Disjunction[T] {
    type or[S]  = Disjunction[T with ![S]]
    type create = ![T]
  }

  type Union[T] = {
    type or[S] = Disjunction[![T]]#or[S]
  }

  type Contains[S, T] = !![S] <:< T

  type UNil

  trait Dim

  sealed trait Axes

  sealed trait Scalar                                    extends Axes
  sealed trait Vec[T <: Dim]                             extends Axes
  sealed trait Mat[T <: Dim, U <: Dim]                   extends Axes
  sealed trait Tuple3OfDim[T <: Dim, U <: Dim, V <: Dim] extends Axes

  type TypesafeTensor[T, A <: Axes] = Tuple2[Array[T], Array[Int]]

  type Tensor[T]       = TypesafeTensor[T, Axes]
  type SparseTensor[T] = Tensor[T]

  type XInt = Int with Singleton

  object TensorFactory {
    def getTensor[T](data: Array[T], t: Array[Int]): Tensor[T] = {
      require(data.size == t.foldLeft(1)(_ * _))
      (data, t)
    }
  }

  trait Operator {
    def callOp[
        T: ClassTag,
        T1: ClassTag,
        T2: ClassTag,
        T3: ClassTag,
        T4: ClassTag,
        T5: ClassTag,
        T6: ClassTag,
        T7: ClassTag,
        T8: ClassTag,
        T9: ClassTag,
        T10: ClassTag,
        T11: ClassTag,
        T12: ClassTag,
        T13: ClassTag,
        T14: ClassTag,
        T15: ClassTag,
        T16: ClassTag,
        T17: ClassTag
    ](
        name: String,
        opName: String,
        inputs: Tuple9[T, T1, T2, T3, T4, T5, T6, T7, T8],
        //    outName: String,
        attrs: Map[String, Any]
    ): (T9)
  }

  abstract class Model(onnxBytes: Array[Byte]) {
    def fullModel[
        T: ClassTag,
        T1: ClassTag,
        T2: ClassTag,
        T3: ClassTag,
        T4: ClassTag,
        T5: ClassTag,
        T6: ClassTag,
        T7: ClassTag,
        T8: ClassTag,
        T9: ClassTag,
        T10: ClassTag,
        T11: ClassTag,
        T12: ClassTag,
        T13: ClassTag,
        T14: ClassTag,
        T15: ClassTag,
        T16: ClassTag,
        T17: ClassTag
    ](
        inputs: Tuple9[T, T1, T2, T3, T4, T5, T6, T7, T8]
    ): (T9)
  }

  trait Graph
  trait DataSource {
    def getParams[T: Numeric: ClassTag](name: String): Tensor[T]
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy