@frozen
public struct ShapedArraySlice<Scalar> : _ShapedArrayProtocol
extension ShapedArraySlice: RandomAccessCollection, MutableCollection
extension ShapedArraySlice: CustomStringConvertible
extension ShapedArraySlice: CustomPlaygroundDisplayConvertible
extension ShapedArraySlice: CustomReflectable
extension ShapedArraySlice: ExpressibleByArrayLiteral where Scalar: TensorFlowScalar
extension ShapedArraySlice: Equatable where Scalar: Equatable
extension ShapedArraySlice: Hashable where Scalar: Hashable
extension ShapedArraySlice: Codable where Scalar: Codable
Un segmento contiguo de una instancia de ShapedArray
o ShapedArraySlice
.
ShapedArraySlice
permite operaciones rápidas y eficientes en sectores contiguos de instancias de ShapedArray
. Las instancias ShapedArraySlice
no tienen su propio almacenamiento. En cambio, proporcionan una vista del almacenamiento de su ShapedArray
base. ShapedArraySlice
puede representar dos tipos diferentes de sectores: matrices y subarreglos de elementos.
Las matrices de elementos son elementos subdimensionales de ShapedArray
: su rango es uno menos que el de su base. Los sectores de la matriz de elementos se obtienen indexando una instancia ShapedArray
con un índice Int32
singular.
Por ejemplo:
var matrix = ShapedArray(shape: [2, 2], scalars: [0, 1, 2, 3])
// `matrix` represents [[0, 1], [2, 3]].
let element = matrix[0]
// `element` is a `ShapedArraySlice` with shape [2]. It is an element
// array, specifically the first element in `matrix`: [0, 1].
matrix[1] = ShapedArraySlice(shape: [2], scalars: [4, 8])
// The second element in `matrix` has been mutated.
// `matrix` now represents [[0, 1, 4, 8]].
Los subarreglos son un rango contiguo de elementos en un ShapedArray
. El rango de un subarreglo es el mismo que el de su base, pero su dimensión principal es el recuento del rango de corte. Los sectores de subarreglo se obtienen indexando un ShapedArray
con un Range<Int32>
que representa un rango de elementos (en la dimensión principal). Los métodos como prefix(:)
y suffix(:)
que indexan internamente con un rango también producen un subarreglo.
Por ejemplo:
let zeros = ShapedArray(repeating: 0, shape: [3, 2])
var matrix = ShapedArray(shape: [3, 2], scalars: Array(0..<6))
// `zeros` represents [[0, 0], [0, 0], [0, 0]].
// `matrix` represents [[0, 1], [2, 3], [4, 5]].
let subarray = matrix.prefix(2)
// `subarray` is a `ShapedArraySlice` with shape [2, 2]. It is a slice
// of the first 2 elements in `matrix` and represents [[0, 1], [2, 3]].
matrix[0..<2] = zeros.prefix(2)
// The first 2 elements in `matrix` have been mutated.
// `matrix` now represents [[0, 0], [0, 0], [4, 5]].
El número de dimensiones de la matriz.
Declaración
public var rank: Int { get }
La forma de la matriz.
Declaración
public var shape: [Int] { get }
El número total de escalares en la matriz.
Declaración
public var scalarCount: Int { get }
Crea un
ShapedArraySlice
con la forma especificada y escalares contiguos en orden de fila principal.Condición previa
El número de escalares debe ser igual al producto de las dimensiones de la forma.Declaración
public init(shape: [Int], scalars: [Scalar])
Crea un
ShapedArraySlice
con la forma y secuencia de escalares especificadas en orden de fila principal.Condición previa
El número de escalares debe ser igual al producto de las dimensiones de la forma.Declaración
public init<S>(shape: [Int], scalars: S) where Scalar == S.Element, S : Sequence
Crea un
ShapedArraySlice
a partir de un valor escalar.Declaración
public init(_ scalar: Scalar)
Crea un
ShapedArraySlice
con la forma especificada y un valor escalar único y repetido.Declaración
@available(*, deprecated, renamed: "init(repeating:shape:﹚") public init(shape: [Int], repeating repeatedValue: Scalar)
Parámetros
repeatedValue
El valor escalar a repetir.
shape
La forma de
ShapedArraySlice
.Crea un
ShapedArraySlice
con la forma especificada y un valor escalar único y repetido.Declaración
public init(repeating repeatedValue: Scalar, shape: [Int])
Parámetros
repeatedValue
El valor escalar a repetir.
shape
La forma de
ShapedArraySlice
.El rango de escalares de la
ShapedArray
base representado porShapedArraySlice
.Declaración
var scalarRange: Range<Int> { get }
Llama a un cierre con un puntero al almacenamiento contiguo de
ShapedArraySlice
.Declaración
public func withUnsafeBufferPointer<Result>( _ body: (UnsafeBufferPointer<Scalar>) throws -> Result ) rethrows -> Result
Parámetros
body
Un cierre con un parámetro
UnsafeBufferPointer
que apunta al almacenamiento contiguo deShapedArraySlice
. Si no existe dicho almacenamiento, se crea. Si el cuerpo tiene un valor de retorno, ese valor también se usa como valor de retorno para el métodowithUnsafeBufferPointer(_:)
. El argumento del puntero es válido sólo mientras dure la ejecución del método.Llama al cierre dado con un puntero al almacenamiento contiguo mutable de
ShapedArraySlice
.Declaración
public mutating func withUnsafeMutableBufferPointer<Result>( _ body: (inout UnsafeMutableBufferPointer<Scalar>) throws -> Result ) rethrows -> Result
Parámetros
body
Un cierre con un parámetro
UnsafeMutableBufferPointer
que apunta al almacenamiento contiguo deShapedArraySlice
. Si no existe dicho almacenamiento, se crea. Si el cuerpo tiene un valor de retorno, ese valor también se usa como valor de retorno para el métodowithUnsafeMutableBufferPointer(_:)
. El argumento del puntero es válido sólo mientras dure la ejecución del método.Declaración
public typealias Index = Int
Declaración
public typealias Element = ShapedArraySlice
Declaración
public typealias SubSequence = ShapedArraySlice
Declaración
public var indices: Range<Int> { get }
Declaración
public var startIndex: Int { get }
Declaración
public var endIndex: Int { get }
Acceda a la matriz de elementos especificada por un índice en la dimensión principal.
Declaración
public subscript(index: Int) -> Element { get set }
Parámetros
index
Índice de la matriz de elementos.
Acceda al subarreglo especificado por un rango contiguo de índices.
Declaración
public subscript(bounds: Range<Int>) -> SubSequence { get set }
Parámetros
bounds
Rango contiguo de índices.
Una representación textual de este
ShapedArraySlice
.Nota
usefullDescription
para obtener una representación no impresa que muestre todos los escalares.Declaración
public var description: String { get }
Declaración
public var playgroundDescription: Any { get }
Declaración
public var customMirror: Mirror { get }
Declaración
public init(_ tensor: Tensor<Scalar>)
Declaración
public typealias ArrayLiteralElement = _TensorElementLiteral<Scalar>
Declaración
public init(arrayLiteral elements: _TensorElementLiteral<Scalar>...)
Declaración
public static func == (lhs: ShapedArraySlice, rhs: ShapedArraySlice) -> Bool
Declaración
public func hash(into hasher: inout Hasher)
Declaración
public func encode(to encoder: Encoder) throws
Declaración
public init(from decoder: Decoder) throws