     memory_limit: memoryLimit,
     container: container,
     shared_name: sharedName)
+}
+
+/// Draws samples from a multinomial distribution.
+///
+/// - Parameters:
+///   - logits: 2-D Tensor with shape `[batch_size, num_classes]`.  Each slice `[i, :]`
+///     represents the unnormalized log probabilities for all classes.
+///   - num_samples: 0-D.  Number of independent samples to draw for each row slice.
+///   - seed: 2 seeds (shape [2]).
+///
+/// - Output output: 2-D Tensor with shape `[batch_size, num_samples]`.  Each slice `[i, :]`
+///   contains the drawn class labels with range `[0, num_classes)`.
+@_inlineable @inline(__always)
+public static func statelessMultinomial<T: Numeric, Tseed: BinaryInteger, Output_dtype: BinaryInteger>(
+  logits: Tensor<T>,
+  numSamples: Tensor<Int32>,
+  seed: Tensor<Tseed>
+) -> Tensor<Output_dtype> {
+  return #tfop("StatelessMultinomial",
+    logits,
+    numSamples,
+    seed,
+    T: T.self,
+    Tseed: Tseed.self,
+    output_dtype: Output_dtype.self)
 }
 
 /// Outputs deterministic pseudorandom values from a normal distribution.

  case scaled = "SCALED"
}

public enum Mode3: String {
  case reflect = "REFLECT"
  case symmetric = "SYMMETRIC"
}

  paddings: Tensor<Int32>,
  filter: Tensor<T>,
  resizeAlignCorners: Bool = false,
  mode: Mode4,
  strides: [Int32],
  padding: Padding
) -> Tensor<T> {
