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ớiMutableCollectionAlgorithms
để 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ênMutableCollectionAlgorithms
.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ếtScalar
củaTensor
.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ớiDifferentiable
khi loại liên kếtScalar
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ớiEuclideanDifferentiable
nếu nó chỉ khả vi đối với thành phần không gian vectơ của nó và khiTangentVector
của nó bằng thành phần không gian vectơ của nó.Tuyên ngôn
public protocol EuclideanDifferentiable : Differentiable
Tuyên ngôn
public protocol Module: EuclideanDifferentiable, KeyPathIterable where TangentVector: VectorProtocol & ElementaryFunctions & PointwiseMultiplicative & KeyPathIterable
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ứccallAsFunction(_:)
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ạngPythonObject
.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ạoinit(seed: [UInt8])
cũng như các yêu cầu choRandomNumberGenerator
. Các giá trị được trả về bởinext()
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 theoTensorArrayProtocol
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