Giao thức

Các giao thức sau đây có sẵn trên toàn cầu.

  • Cung cấp các điểm tùy chỉnh cho thuật toán MutableCollection .

    Nếu được tích hợp vào thư viện chuẩn, những yêu cầu này sẽ chỉ là một phần của MutableCollection . Trong thời gian chờ đợi, bạn có thể khai báo sự tuân thủ của một bộ sưu tập đối với MutableCollectionAlgorithms để sử dụng các điểm tùy chỉnh này từ các thuật toán khác được xác định trên MutableCollectionAlgorithms .

    Tuyên ngôn

    public protocol MutableCollectionAlgorithms: MutableCollection
    where SubSequence: MutableCollectionAlgorithms
  • Tuyên ngôn

    public protocol TensorFlowScalar : _TensorFlowDataTypeCompatible
  • Tuyên ngôn

    public protocol TensorRangeExpression
  • Các loại mà các phần tử của nó có thể được đối chiếu trong một số phần tử cấp cao hơn cùng loại (ví dụ: tensor, tuple of tensor)

    Tuyên ngôn

    public protocol Collatable
  • Loại có các thuộc tính và phần tử lồng nhau có thể được sao chép vào Device .

    Tuyên ngôn

    public protocol CopyableToDevice : _CopyableToDevice
  • Loại có giá trị cung cấp đường dẫn khóa tùy chỉnh đến thuộc tính hoặc thành phần.

    Tuyên ngôn

    public protocol KeyPathIterable : _KeyPathIterableBase
  • Kiểu dữ liệu vô hướng tương thích với TensorFlow.

    Các loại phù hợp với TensorFlowScalar có thể được sử dụng làm loại liên kết Scalar của Tensor .

  • Một kiểu dữ liệu số nguyên biểu thị các kiểu số nguyên có thể được sử dụng làm chỉ số tensor trong TensorFlow.

    Tuyên ngôn

    public protocol TensorFlowIndex : BinaryInteger, TensorFlowScalar
  • Kiểu dữ liệu dấu phẩy động phù hợp với Differentiable và tương thích với TensorFlow.

    Ghi chú

    Tensor tuân thủ có điều kiện với Differentiable khi loại liên kết Scalar tuân thủ TensorFlowFloatingPoint .

    Tuyên ngôn

    public protocol TensorFlowFloatingPoint:
      TensorFlowScalar & BinaryFloatingPoint & Differentiable & ElementaryFunctions
    where
      Self.RawSignificand: FixedWidthInteger,
      Self == Self.TangentVector
  • Một kiểu biểu diễn về mặt toán học một đa tạp khả vi có các không gian tiếp tuyến là hữu hạn chiều.

    Tuyên ngôn

    public protocol Differentiable
  • Một loại có các giá trị hỗ trợ phép nhân theo điểm.

    Tuyên ngôn

    public protocol PointwiseMultiplicative : AdditiveArithmetic
  • Một kiểu biểu diễn một không gian vectơ không xếp hạng. Các giá trị thuộc loại này là các phần tử trong không gian vectơ này và không có hình dạng hoặc hình dạng tĩnh.

    Tuyên ngôn

    public protocol VectorProtocol : AdditiveArithmetic
  • Một loại có khả vi trong không gian Euclide. Loại này có thể biểu diễn một không gian vectơ hoặc bao gồm một không gian vectơ và một số thành phần không khả vi khác.

    Về mặt toán học, điều này biểu thị một đa tạp tích bao gồm một không gian vectơ khả vi và một số đa tạp tùy ý, trong đó bó tiếp tuyến của toàn bộ đa tạp tích bằng thành phần không gian vectơ.

    Sự trừu tượng hóa này rất hữu ích để biểu diễn các cấu trúc dữ liệu khả vi chung chứa cả các thuộc tính vectơ khả vi và các thuộc tính được lưu trữ khác không có đạo hàm, ví dụ:

    struct Perceptron: @memberwise EuclideanDifferentiable {
        var weight: SIMD16<Float>
        var bias: Float
        @noDerivative var useBias: Bool
    }
    

    Ghi chú

    Tuân thủ một kiểu với EuclideanDifferentiable nếu nó chỉ khả vi đối với thành phần không gian vectơ của nó và khi TangentVector của nó bằng thành phần không gian vectơ của nó.

    Tuyên ngôn

    public protocol EuclideanDifferentiable : Differentiable
  • Một lớp mạng thần kinh.

    Các loại phù hợp với Layer biểu thị các hàm ánh xạ đầu vào thành đầu ra. Chúng có thể có trạng thái bên trong được biểu thị bằng các tham số, chẳng hạn như các tensor trọng lượng.

    Các phiên bản Layer xác định một phương thức callAsFunction(_:) có thể phân biệt để ánh xạ đầu vào thành đầu ra.

    Tuyên ngôn

    public protocol Layer : Module where Self.Input : Differentiable
  • Một lớp mạng thần kinh không tham số.

    TangentVector của các lớp không tham số luôn là EmptyTangentVector .

    Tuyên ngôn

    public protocol ParameterlessLayer : Layer where Self.TangentVector == EmptyTangentVector
  • Một loại có sẵn các chức năng cơ bản.

    “Hàm cơ bản” là một hàm được xây dựng từ lũy thừa, căn, số mũ, logarit, hàm lượng giác (sin, cos, tan) và các hàm nghịch đảo của chúng, cũng như các hàm hyperbolic (sinh, cosh, tanh) và nghịch đảo của chúng.

    Sự phù hợp với giao thức này có nghĩa là tất cả các khối xây dựng này đều có sẵn dưới dạng các hàm tĩnh trên loại.

    let x: Float = 1
    let y = Float.sin(x) // 0.84147096
    

    Tuyên ngôn

    public protocol ElementaryFunctions
  • Một loại có các thuộc tính và phần tử tensor dấu phẩy động lồng nhau có thể được chuyển đổi từ độ chính xác hoàn toàn sang độ chính xác giảm và ngược lại.

  • Một chi tiết triển khai được sử dụng để giải quyết thực tế là Swift không thể diễn đạt một ràng buộc chung rằng một số loại phải là một phiên bản của Sampling .

    Tuyên ngôn

    public protocol SamplingProtocol : Collection
  • Một loại có thể được khởi tạo từ một phiên bản numpy.ndarray được biểu thị dưới dạng PythonObject .

    Tuyên ngôn

    public protocol ConvertibleFromNumpyArray
  • Loại tương thích bitwise với một hoặc nhiều loại vô hướng NumPy.

    Tuyên ngôn

    public protocol NumpyScalarCompatible
  • Một loại có giá trị có thể được chuyển đổi thành PythonObject .

    Tuyên ngôn

    public protocol PythonConvertible
  • Một loại có thể được khởi tạo từ PythonObject .

    Tuyên ngôn

    public protocol ConvertibleFromPython
  • Một loại cung cấp dữ liệu giả ngẫu nhiên xác định có thể gieo hạt.

    SeedableRandomNumberGenerator có thể được sử dụng ở bất cứ nơi nào RandomNumberGenerator sẽ được sử dụng. Nó rất hữu ích khi dữ liệu giả ngẫu nhiên cần được tái tạo trong các lần chạy.

    Tuân thủ Giao thức SeedableRandomNumberGenerator

    Để tạo một loại tùy chỉnh tuân theo giao thức SeedableRandomNumberGenerator , hãy triển khai trình khởi tạo init(seed: [UInt8]) cũng như các yêu cầu cho RandomNumberGenerator . Các giá trị được trả về bởi next() phải tạo thành một chuỗi xác định chỉ phụ thuộc vào hạt giống được cung cấp khi khởi tạo.

    Tuyên ngôn

    public protocol SeedableRandomNumberGenerator : RandomNumberGenerator
  • Tuyên ngôn

    public protocol RandomDistribution
  • Một tế bào lớp tái phát.

    Tuyên ngôn

    public protocol RecurrentLayerCell: Layer
    where
      Input == RNNCellInput<TimeStepInput, State>,
      Output == RNNCellOutput<TimeStepOutput, State>
  • Một loại có các giá trị hỗ trợ các phép toán nhị phân khả vi.

    Được BidirectionalRecurrentLayer sử dụng làm yêu cầu chung cho các hàm hợp nhất.

    Tuyên ngôn

    public protocol Mergeable : AdditiveArithmetic, Differentiable
  • Tuyên ngôn

    public protocol TensorOperation
  • Tuyên ngôn

    public protocol TFTensorOperation : TensorOperation
  • Giao thức đặc biệt để gọi các hoạt động tensorflow lấy các mảng không đồng nhất làm đầu vào.

    Tuyên ngôn

    public protocol AnyTensor
  • Tuyên ngôn

    public protocol TensorProtocol
  • Tuyên ngôn

    public protocol DifferentiableTensorProtocol:
      TensorProtocol & Differentiable & EuclideanDifferentiable
    where Scalar: TensorFlowFloatingPoint
  • Một giao thức đại diện cho các loại có thể được ánh xạ tới Array<CTensorHandle> .

    Giao thức này được xác định riêng biệt với TensorGroup để xác định số lượng tensor khi chạy. Ví dụ: [Tensor<Float>] có thể có số lượng phần tử không xác định tại thời điểm biên dịch.

    Giao thức này có thể được lấy tự động cho các cấu trúc có thuộc tính được lưu trữ đều tuân thủ giao thức TensorGroup . Nó không thể được lấy tự động đối với các cấu trúc có tất cả các thuộc tính đều tuân theo TensorArrayProtocol do yêu cầu của hàm tạo (nghĩa là trong những trường hợp như vậy sẽ không thể biết cách chia nhỏ count giữa các thuộc tính được lưu trữ).

    Tuyên ngôn

    public protocol TensorArrayProtocol
  • Một giao thức đại diện cho các loại có thể được ánh xạ tới và đi từ Array<CTensorHandle> .

    Khi một TensorGroup được sử dụng làm đối số cho phép toán tensor, nó được chuyển dưới dạng danh sách đối số có các phần tử là trường tensor của loại.

    Khi một TensorGroup được trả về do một phép toán tensor, nó được khởi tạo với các trường tensor của nó được đặt thành kết quả tensor của phép toán tensor.

    Tuyên ngôn

    public protocol TensorGroup : TensorArrayProtocol
  • Kiểu dữ liệu được hỗ trợ trong x10.

    Tuyên ngôn

    public protocol XLAScalarType