 ) -> StringTensor {
   let ret: TensorHandle<String> = #tfop("ReadFile",
     filename)
-  return StringTensor(handle: ret)
-}
-
-/// Returns the number of records this Reader has produced.
-///
-/// This is the same as the number of ReaderRead executions that have
-/// succeeded.
-///
-/// - Parameter reader_handle: Handle to a Reader.
-@inlinable @inline(__always)
-public static func readerNumRecordsProduced(
-  readerHandle: StringTensor
-) -> Tensor<Int64> {
-  let ret: TensorHandle<Int64> = #tfop("ReaderNumRecordsProduced",
-    readerHandle)
-  return Tensor(handle: ret)
-}
-
-/// Returns the number of work units this Reader has finished processing.
-///
-/// - Parameter reader_handle: Handle to a Reader.
-@inlinable @inline(__always)
-public static func readerNumWorkUnitsCompleted(
-  readerHandle: StringTensor
-) -> Tensor<Int64> {
-  let ret: TensorHandle<Int64> = #tfop("ReaderNumWorkUnitsCompleted",
-    readerHandle)
-  return Tensor(handle: ret)
-}
-
-/// Returns the next record (key, value pair) produced by a Reader.
-///
-/// Will dequeue from the input queue if necessary (e.g. when the
-/// Reader needs to start reading from a new file since it has finished
-/// with the previous file).
-///
-/// - Parameters:
-///   - reader_handle: Handle to a Reader.
-///   - queue_handle: Handle to a Queue, with string work items.
-///
-/// - Outputs:
-///   - key: A scalar.
-///   - value: A scalar.
-@inlinable @inline(__always)
-public static func readerRead(
-  readerHandle: StringTensor,
-  queueHandle: StringTensor
-) -> (key: StringTensor, value: StringTensor) {
-  let ret: (TensorHandle<String>, TensorHandle<String>) = #tfop("ReaderRead",
-    readerHandle,
-    queueHandle)
-  return (StringTensor(handle: ret.0), StringTensor(handle: ret.1))
-}
-
-/// Returns up to `num_records` (key, value) pairs produced by a Reader.
-///
-/// Will dequeue from the input queue if necessary (e.g. when the
-/// Reader needs to start reading from a new file since it has finished
-/// with the previous file).
-/// It may return less than `num_records` even before the last batch.
-///
-/// - Parameters:
-///   - reader_handle: Handle to a `Reader`.
-///   - queue_handle: Handle to a `Queue`, with string work items.
-///   - num_records: number of records to read from `Reader`.
-///
-/// - Outputs:
-///   - keys: A 1-D tensor.
-///   - values: A 1-D tensor.
-@inlinable @inline(__always)
-public static func readerReadUpTo(
-  readerHandle: StringTensor,
-  queueHandle: StringTensor,
-  numRecords: Tensor<Int64>
-) -> (keys: StringTensor, values: StringTensor) {
-  let ret: (TensorHandle<String>, TensorHandle<String>) = #tfop("ReaderReadUpTo",
-    readerHandle,
-    queueHandle,
-    numRecords)
-  return (StringTensor(handle: ret.0), StringTensor(handle: ret.1))
-}
-
-/// Restore a Reader to its initial clean state.
-///
-/// - Parameter reader_handle: Handle to a Reader.
-@inlinable @inline(__always)
-public static func readerReset(
-  readerHandle: StringTensor
-) {
-  return #tfop("ReaderReset",
-    readerHandle)
-}
-
-/// Restore a reader to a previously saved state.
-///
-/// Not all Readers support being restored, so this can produce an
-/// Unimplemented error.
-///
-/// - Parameters:
-///   - reader_handle: Handle to a Reader.
-///   - state: Result of a ReaderSerializeState of a Reader with type
-///     matching reader_handle.
-@inlinable @inline(__always)
-public static func readerRestoreState(
-  readerHandle: StringTensor,
-  state: StringTensor
-) {
-  return #tfop("ReaderRestoreState",
-    readerHandle,
-    state)
-}
-
-/// Produce a string tensor that encodes the state of a Reader.
-///
-/// Not all Readers support being serialized, so this can produce an
-/// Unimplemented error.
-///
-/// - Parameter reader_handle: Handle to a Reader.
-@inlinable @inline(__always)
-public static func readerSerializeState(
-  readerHandle: StringTensor
-) -> StringTensor {
-  let ret: TensorHandle<String> = #tfop("ReaderSerializeState",
-    readerHandle)
   return StringTensor(handle: ret)
 }
 

    T$dtype: T.tensorFlowDataType,
    ksize: ksize,
    strides: strides,
    padding: padding.cName)
  return Tensor(handle: ret)
}


public static func resizeBicubicGrad<T: FloatingPoint & TensorFlowScalar>(
  grads: Tensor<Float>,
  originalImage: Tensor<T>,
  alignCorners: Bool = false,
  halfPixelCenters: Bool = false
) -> Tensor<T> {
  let ret: TensorHandle<T> = #tfop("ResizeBicubicGrad",
    grads,
    originalImage,
    T$dtype: T.tensorFlowDataType,
    align_corners: alignCorners,
    half_pixel_centers: halfPixelCenters)
  return Tensor(handle: ret)
}

