Các cấu trúc sau đây có sẵn trên toàn cầu.
Sự kết hợp của hai chuỗi có cùng loại phần tử.
Tuyên ngôn
public struct Concatenation<Base1: Sequence, Base2: Sequence>: Sequence where Base1.Element == Base2.Element
extension Concatenation: Collection where Base1: Collection, Base2: Collection
extension Concatenation: BidirectionalCollection where Base1: BidirectionalCollection, Base2: BidirectionalCollection
extension Concatenation: RandomAccessCollection where Base1: RandomAccessCollection, Base2: RandomAccessCollection
Chế độ xem được xoay trên một bộ sưu tập.
Tuyên ngôn
public struct RotatedCollection<Base> : Collection where Base : Collection
extension RotatedCollection: BidirectionalCollection where Base: BidirectionalCollection
extension RotatedCollection: RandomAccessCollection where Base: RandomAccessCollection
Tuyên ngôn
public struct AnyDifferentiable : Differentiable
Một giá trị phái sinh được loại bỏ.
Loại
AnyDerivative
chuyển tiếp các hoạt động của nó tới một giá trị phái sinh cơ sở cơ bản tùy ý tuân theoDifferentiable
vàAdditiveArithmetic
, ẩn các chi tiết cụ thể của giá trị cơ bản.Tuyên ngôn
@frozen public struct AnyDerivative : Differentiable & AdditiveArithmetic
Mảng đa chiều gồm các phần tử là sự tổng quát hóa của vectơ và ma trận thành các chiều có khả năng cao hơn.
Tham số chung
Scalar
mô tả loại đại số vô hướng trong tensor (chẳng hạn nhưInt32
,Float
, v.v.).Tuyên ngôn
@frozen public struct Tensor<Scalar> where Scalar : TensorFlowScalar
extension Tensor: Collatable
extension Tensor: CopyableToDevice
extension Tensor: AnyTensor
extension Tensor: ExpressibleByArrayLiteral
extension Tensor: CustomStringConvertible
extension Tensor: CustomPlaygroundDisplayConvertible
extension Tensor: CustomReflectable
extension Tensor: TensorProtocol
extension Tensor: TensorGroup
extension Tensor: ElementaryFunctions where Scalar: TensorFlowFloatingPoint
extension Tensor: VectorProtocol where Scalar: TensorFlowFloatingPoint
extension Tensor: Mergeable where Scalar: TensorFlowFloatingPoint
extension Tensor: Equatable where Scalar: Equatable
extension Tensor: Codable where Scalar: Codable
extension Tensor: AdditiveArithmetic where Scalar: Numeric
extension Tensor: PointwiseMultiplicative where Scalar: Numeric
extension Tensor: Differentiable & EuclideanDifferentiable where Scalar: TensorFlowFloatingPoint
extension Tensor: DifferentiableTensorProtocol where Scalar: TensorFlowFloatingPoint
Hàm pullback thực hiện chuyển đổi phát sóng hai
Tensors
.Tuyên ngôn
public struct BroadcastingPullback
Ngữ cảnh lưu trữ thông tin theo ngữ cảnh cục bộ theo luồng được sử dụng bởi các API học sâu chẳng hạn như các lớp.
Sử dụng
Context.local
để truy xuất bối cảnh luồng cục bộ hiện tại.Ví dụ:
- Đặt giai đoạn học tập hiện tại thành đào tạo để các lớp như
BatchNorm
sẽ tính toán giá trị trung bình và phương sai khi áp dụng cho đầu vào.
Context.local.learningPhase = .training
- Đặt giai đoạn học hiện tại thành suy luận để các lớp như
Dropout
sẽ không loại bỏ các đơn vị khi áp dụng cho đầu vào.
Context.local.learningPhase = .inference
Tuyên ngôn
public struct Context
- Đặt giai đoạn học tập hiện tại thành đào tạo để các lớp như
Lớp tích chập 1-D (ví dụ: tích chập theo thời gian trên chuỗi thời gian).
Lớp này tạo ra một bộ lọc tích chập được tích hợp với đầu vào của lớp để tạo ra một tensor đầu ra.
Tuyên ngôn
@frozen public struct Conv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Lớp tích chập 2-D (ví dụ: tích chập không gian trên hình ảnh).
Lớp này tạo ra một bộ lọc tích chập được tích hợp với đầu vào của lớp để tạo ra một tensor đầu ra.
Tuyên ngôn
@frozen public struct Conv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Lớp tích chập 3-D để tích chập không gian/không gian-thời gian trên hình ảnh.
Lớp này tạo ra một bộ lọc tích chập được tích hợp với đầu vào của lớp để tạo ra một tensor đầu ra.
Tuyên ngôn
@frozen public struct Conv3D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Lớp tích chập chuyển đổi 1-D (ví dụ: tích chập chuyển đổi thời gian trên hình ảnh).
Lớp này tạo ra một bộ lọc tích chập được chuyển đổi tích chập với đầu vào của lớp để tạo ra một tenxơ đầu ra.
Tuyên ngôn
@frozen public struct TransposedConv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Lớp tích chập chuyển đổi 2-D (ví dụ: tích chập chuyển đổi không gian trên hình ảnh).
Lớp này tạo ra một bộ lọc tích chập được chuyển đổi tích chập với đầu vào của lớp để tạo ra một tenxơ đầu ra.
Tuyên ngôn
@frozen public struct TransposedConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Lớp tích chập chuyển đổi 3-D (ví dụ: tích chập chuyển đổi không gian trên hình ảnh).
Lớp này tạo ra một bộ lọc tích chập được chuyển đổi tích chập với đầu vào của lớp để tạo ra một tenxơ đầu ra.
Tuyên ngôn
@frozen public struct TransposedConv3D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Lớp tích chập theo chiều sâu 2-D.
Lớp này tạo ra các bộ lọc tích chập có thể tách rời được tích hợp với đầu vào của lớp để tạo ra một tensor đầu ra.
Tuyên ngôn
@frozen public struct DepthwiseConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Một lớp để thêm phần đệm bằng 0 vào chiều thời gian.
Tuyên ngôn
public struct ZeroPadding1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Một lớp để thêm phần đệm bằng 0 vào các kích thước không gian.
Tuyên ngôn
public struct ZeroPadding2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Một lớp để thêm phần đệm bằng 0 vào các chiều không gian/không gian-thời gian.
Tuyên ngôn
public struct ZeroPadding3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Lớp tích chập có thể phân tách 1-D.
Lớp này thực hiện tích chập theo chiều sâu hoạt động riêng biệt trên các kênh, sau đó là tích chập theo chiều điểm để trộn các kênh.
Tuyên ngôn
@frozen public struct SeparableConv1D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Lớp tích chập có thể phân tách 2-D.
Lớp này thực hiện tích chập theo chiều sâu hoạt động riêng biệt trên các kênh, sau đó là tích chập theo chiều điểm để trộn các kênh.
Tuyên ngôn
@frozen public struct SeparableConv2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Một lớp phẳng.
Một lớp làm phẳng sẽ làm phẳng đầu vào khi được áp dụng mà không ảnh hưởng đến kích thước lô.
Tuyên ngôn
@frozen public struct Flatten<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Một lớp định hình lại.
Tuyên ngôn
@frozen public struct Reshape<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Một lớp bao quanh một hàm khả vi tùy chỉnh.
Tuyên ngôn
public struct Function<Input, Output> : ParameterlessLayer where Input : Differentiable, Output : Differentiable
Giá trị loại động TensorFlow có thể được tạo từ các loại tuân theo
TensorFlowScalar
.Tuyên ngôn
public struct TensorDataType : Equatable
Tuyên ngôn
Đại diện cho một tập hợp lớn các phần tử.
Dataset
có thể được sử dụng để biểu diễn đường dẫn đầu vào dưới dạng tập hợp các tensor phần tử.Tuyên ngôn
@available(*, deprecated, message: "Datasets will be removed in S4TF v0.10. Please use the new Batches API instead.") @frozen public struct Dataset<Element> where Element : TensorGroup
extension Dataset: Sequence
Loại cho phép lặp lại các phần tử của tập dữ liệu.
Tuyên ngôn
@available(*, deprecated) @frozen public struct DatasetIterator<Element> where Element : TensorGroup
extension DatasetIterator: IteratorProtocol
Cấu trúc giống như 2 bộ tuân theo TensorGroup đại diện cho bộ gồm 2 loại tuân theo
TensorGroup
.Tuyên ngôn
@frozen public struct Zip2TensorGroup<T, U> : TensorGroup where T : TensorGroup, U : TensorGroup
Một lớp mạng lưới thần kinh được kết nối dày đặc.
Dense
triển khai hoạt độngactivation(matmul(input, weight) + bias)
, trong đóweight
là ma trận trọng số,bias
là vectơ thiên vị vàactivation
là hàm kích hoạt theo phần tử.Lớp này cũng hỗ trợ các tensor trọng lượng 3-D với ma trận sai lệch 2-D. Trong trường hợp này, thứ nguyên đầu tiên của cả hai đều được coi là kích thước lô được căn chỉnh với kích thước
input
đầu tiên và biến thể lô của thao tácmatmul(_:_:)
được sử dụng, do đó sử dụng trọng số và độ lệch khác nhau cho từng phần tử trong lô đầu vào.Tuyên ngôn
@frozen public struct Dense<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Một thiết bị mà
Tensor
s có thể được phân bổ trên đó.Tuyên ngôn
public struct Device
extension Device: Equatable
extension Device: CustomStringConvertible
Một lớp bỏ học.
Bỏ học bao gồm việc đặt ngẫu nhiên một phần đơn vị đầu vào thành
0
ở mỗi lần cập nhật trong thời gian đào tạo, điều này giúp ngăn ngừa việc trang bị quá mức.Tuyên ngôn
@frozen public struct Dropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
GaussianNoise
thêm nhiễu được lấy mẫu từ phân phối chuẩn.Tiếng ồn được thêm vào luôn có giá trị trung bình bằng 0 nhưng có độ lệch chuẩn có thể định cấu hình.
Tuyên ngôn
public struct GaussianNoise<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
GaussianDropout
nhân đầu vào với nhiễu được lấy mẫu từ phân phối chuẩn có giá trị trung bình là 1,0.Vì đây là lớp chính quy nên nó chỉ hoạt động trong thời gian đào tạo. Trong quá trình suy luận,
GaussianDropout
chuyển qua đầu vào chưa được sửa đổi.Tuyên ngôn
public struct GaussianDropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Một lớp bỏ học Alpha.
Alpha Dropout là
Dropout
giữ giá trị trung bình và phương sai của đầu vào về giá trị ban đầu của chúng, để đảm bảo thuộc tính tự chuẩn hóa ngay cả sau lần bỏ học này. Alpha Dropout rất phù hợp với Đơn vị tuyến tính hàm mũ theo tỷ lệ bằng cách đặt ngẫu nhiên các kích hoạt thành giá trị bão hòa âm.Nguồn: Mạng thần kinh tự chuẩn hóa: https://arxiv.org/abs/1706.02515
Tuyên ngôn
@frozen public struct AlphaDropout<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Một lớp nhúng.
Embedding
thực sự là một bảng tra cứu ánh xạ các chỉ mục từ một từ vựng cố định sang các biểu diễn vectơ có kích thước cố định (dày đặc), ví dụ:[[0], [3]] -> [[0.25, 0.1], [0.6, -0.2]]
.Tuyên ngôn
public struct Embedding<Scalar> : Module where Scalar : TensorFlowFloatingPoint
Một cấu trúc trống biểu thị các
TangentVector
trống cho các lớp không tham số.Tuyên ngôn
public struct EmptyTangentVector: EuclideanDifferentiable, VectorProtocol, ElementaryFunctions, PointwiseMultiplicative, KeyPathIterable
Cặp khoảnh khắc thứ nhất và thứ hai (nghĩa là giá trị trung bình và phương sai).
Ghi chú
Điều này là cần thiết vì các kiểu tuple không thể phân biệt được.Tuyên ngôn
public struct Moments<Scalar> : Differentiable where Scalar : TensorFlowFloatingPoint
Lớp giãn nở hình thái 2-D
Lớp này trả về độ giãn hình thái của tensor đầu vào với các bộ lọc được cung cấp
Tuyên ngôn
@frozen public struct Dilation2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Lớp xói mòn hình thái 2-D
Lớp này trả về sự xói mòn hình thái của tensor đầu vào với các bộ lọc được cung cấp
Tuyên ngôn
@frozen public struct Erosion2D<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Một lựa chọn lười biếng của các phần tử, theo một thứ tự nhất định, từ một số bộ sưu tập cơ sở.
Tuyên ngôn
public struct Sampling<Base: Collection, Selection: Collection> where Selection.Element == Base.Index
extension Sampling: SamplingProtocol
extension Sampling: Collection
extension Sampling: BidirectionalCollection where Selection: BidirectionalCollection
extension Sampling: RandomAccessCollection where Selection: RandomAccessCollection
Một tập hợp các lát cắt liền kề không chồng chéo dài nhất của một số Bộ sưu tập
Base
, bắt đầu với phần tử đầu tiên và có độ dài tối đa cố định.Các phần tử của bộ sưu tập này, ngoại trừ phần cuối cùng, tất cả đều có
count
lượngbatchSize
, trừ khiBase.count % batchSize !=0
, trong trường hợp đócount
của đợt cuối cùng làbase.count % batchSize.
Tuyên ngôn
public struct Slices<Base> where Base : Collection
extension Slices: Collection
Một lớp chuẩn hóa hàng loạt.
Bình thường hóa các kích hoạt của lớp trước ở mỗi đợt, tức là áp dụng một phép biến đổi duy trì kích hoạt trung bình gần bằng
0
và độ lệch chuẩn kích hoạt gần bằng1
.Tham khảo: Chuẩn hóa hàng loạt: Tăng tốc đào tạo mạng sâu bằng cách giảm sự thay đổi hiệp phương sai nội bộ .
Tuyên ngôn
@frozen public struct BatchNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Một lớp áp dụng chuẩn hóa lớp trên một loạt đầu vào nhỏ.
Tham khảo: Chuẩn hóa lớp .
Tuyên ngôn
@frozen public struct LayerNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Một lớp áp dụng chuẩn hóa nhóm cho một loạt đầu vào nhỏ.
Tham khảo: Chuẩn hóa nhóm .
Tuyên ngôn
@frozen public struct GroupNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Một lớp áp dụng chuẩn hóa phiên bản trên một loạt đầu vào nhỏ.
Tham khảo: Chuẩn hóa sơ thẩm: Thành phần còn thiếu để tạo kiểu nhanh .
Tuyên ngôn
@frozen public struct InstanceNorm<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
Nêu rõ từng bước của một trọng số bên trong trình tối ưu hóa.
Tuyên ngôn
public struct OptimizerWeightStepState
Trạng thái toàn cầu được truy cập thông qua
StateAccessor
.Tuyên ngôn
public struct OptimizerState
[String: Float]
nhưng các phần tử có thể được truy cập như thể chúng là thành viên.Tuyên ngôn
@dynamicMemberLookup public struct HyperparameterDictionary
Trình tối ưu hóa hoạt động trên một nhóm tham số duy nhất.
Tuyên ngôn
public struct ParameterGroupOptimizer
Trình bao bọc an toàn kiểu xung quanh giá trị chỉ mục
Int
cho các giá trị cục bộ của trình tối ưu hóa.Tuyên ngôn
public struct LocalAccessor
Trình bao bọc an toàn kiểu xung quanh giá trị chỉ mục
Int
cho các giá trị toàn cục của trình tối ưu hóa.Tuyên ngôn
public struct GlobalAccessor
Trình bao bọc an toàn kiểu xung quanh giá trị chỉ mục
Int
cho các giá trị trạng thái của trình tối ưu hóa.Tuyên ngôn
public struct StateAccessor
Xây dựng
ParameterGroupOptimizer
. Điều này về cơ bản được sử dụng ở cấp độ của một trọng lượng duy nhất trong mô hình. Ánh xạ từ các nhóm tham số được chọn bởi ([Bool]
tới ParameterGroupOptimizer) xác định trình tối ưu hóa cuối cùng.Tuyên ngôn
public struct ParameterGroupOptimizerBuilder
Lớp tổng hợp tối đa cho dữ liệu tạm thời.
Tuyên ngôn
@frozen public struct MaxPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Lớp tổng hợp tối đa cho dữ liệu không gian.
Tuyên ngôn
@frozen public struct MaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Lớp tổng hợp tối đa cho dữ liệu không gian hoặc không gian-thời gian.
Tuyên ngôn
@frozen public struct MaxPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Một lớp tổng hợp trung bình cho dữ liệu tạm thời.
Tuyên ngôn
@frozen public struct AvgPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Một lớp tổng hợp trung bình cho dữ liệu không gian.
Tuyên ngôn
@frozen public struct AvgPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Lớp tổng hợp trung bình cho dữ liệu không gian hoặc không gian-thời gian.
Tuyên ngôn
@frozen public struct AvgPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Lớp tổng hợp trung bình toàn cầu cho dữ liệu tạm thời.
Tuyên ngôn
@frozen public struct GlobalAvgPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Lớp tổng hợp trung bình toàn cầu cho dữ liệu không gian.
Tuyên ngôn
@frozen public struct GlobalAvgPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Lớp tổng hợp trung bình toàn cầu cho dữ liệu không gian và không gian-thời gian.
Tuyên ngôn
@frozen public struct GlobalAvgPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Lớp tổng hợp tối đa toàn cầu cho dữ liệu tạm thời.
Tuyên ngôn
@frozen public struct GlobalMaxPool1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Lớp tổng hợp tối đa toàn cầu cho dữ liệu không gian.
Tuyên ngôn
@frozen public struct GlobalMaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Lớp tổng hợp tối đa toàn cầu cho dữ liệu không gian và không gian-thời gian.
Tuyên ngôn
@frozen public struct GlobalMaxPool3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Lớp tổng hợp tối đa phân đoạn cho dữ liệu không gian. Lưu ý:
FractionalMaxPool
không triển khai XLA và do đó có thể ảnh hưởng đến hiệu suất.Tuyên ngôn
@frozen public struct FractionalMaxPool2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
PythonObject
đại diện cho một đối tượng trong Python và hỗ trợ tra cứu thành viên động. Bất kỳ quyền truy cập thành viên nào nhưobject.foo
sẽ tự động yêu cầu thời gian chạy Python cho thành viên có tên được chỉ định trong đối tượng này.PythonObject
được chuyển đến và trả về từ tất cả các lệnh gọi hàm và tham chiếu thành viên của Python. Nó hỗ trợ các toán tử so sánh và số học Python tiêu chuẩn.Trong nội bộ,
PythonObject
được triển khai dưới dạng con trỏ được tính tham chiếu tới APIPyObject
của Python C.Tuyên ngôn
@dynamicCallable @dynamicMemberLookup public struct PythonObject
extension PythonObject : CustomStringConvertible
extension PythonObject : CustomPlaygroundDisplayConvertible
extension PythonObject : CustomReflectable
extension PythonObject : PythonConvertible, ConvertibleFromPython
extension PythonObject : SignedNumeric
extension PythonObject : Strideable
extension PythonObject : Equatable, Comparable
extension PythonObject : Hashable
extension PythonObject : MutableCollection
extension PythonObject : Sequence
extension PythonObject : ExpressibleByBooleanLiteral, ExpressibleByIntegerLiteral, ExpressibleByFloatLiteral, ExpressibleByStringLiteral
extension PythonObject : ExpressibleByArrayLiteral, ExpressibleByDictionaryLiteral
Trình bao bọc
PythonObject
cho phép thực hiện các lệnh gọi phương thức. Các ngoại lệ do các hàm Python tạo ra được phản ánh dưới dạng lỗi Swift và bị ném ra.Ghi chú
ViệcThrowingPythonObject
cố ý không có thuộc tính@dynamicCallable
vì cú pháp cuộc gọi không trực quan:x.throwing(arg1, arg2, ...)
. Các phương thức sẽ vẫn được đặt têndynamicallyCall
cho đến khi thảo luận/thiết kế thêm.Tuyên ngôn
public struct ThrowingPythonObject
Trình bao bọc
PythonObject
cho phép thành viên truy cập. Hoạt động truy cập thành viên trả về kết quảOptional
. Khi quyền truy cập của thành viên không thành công,nil
được trả về.Tuyên ngôn
@dynamicMemberLookup public struct CheckingPythonObject
Một giao diện cho Python.
PythonInterface
cho phép tương tác với Python. Nó có thể được sử dụng để nhập các mô-đun và truy cập động các loại và hàm dựng sẵn của Python.Ghi chú
Nó không nhằm mục đích khởi tạo trực tiếpPythonInterface
. Thay vào đó, vui lòng sử dụng phiên bản toàn cầu củaPythonInterface
có tên làPython
.Tuyên ngôn
@dynamicMemberLookup public struct PythonInterface
Tuyên ngôn
public struct PythonLibrary
Một trình tạo số ngẫu nhiên được xóa kiểu.
Loại
AnyRandomNumberGenerator
chuyển tiếp các hoạt động tạo số ngẫu nhiên tới một trình tạo số ngẫu nhiên cơ bản, ẩn loại cơ bản cụ thể của nó.Tuyên ngôn
public struct AnyRandomNumberGenerator : RandomNumberGenerator
Việc triển khai
SeedableRandomNumberGenerator
bằng ARC4.ARC4 là một mật mã luồng tạo ra luồng byte giả ngẫu nhiên. PRNG này sử dụng hạt giống làm khóa của nó.
ARC4 được mô tả trong Schneier, B., “Mật mã ứng dụng: Giao thức, thuật toán và mã nguồn trong C”, tái bản lần 2, 1996.
Một trình tạo riêng lẻ không an toàn cho luồng, nhưng các trình tạo riêng biệt không chia sẻ trạng thái. Dữ liệu ngẫu nhiên được tạo ra có chất lượng cao nhưng không phù hợp với các ứng dụng mã hóa.
Tuyên ngôn
@frozen public struct ARC4RandomNumberGenerator : SeedableRandomNumberGenerator
Triển khai
SeedableRandomNumberGenerator
bằng Threefry. Cá hồi và cộng sự. SC 2011. Các số ngẫu nhiên song song: dễ như 1, 2, 3. http://www.thesalmons.org/john/random123/papers/random123sc11.pdfCấu trúc này triển khai PRNG Threefry2x32 20 vòng. Nó phải được gieo với giá trị 64-bit.
Một trình tạo riêng lẻ không an toàn cho luồng, nhưng các trình tạo riêng biệt không chia sẻ trạng thái. Dữ liệu ngẫu nhiên được tạo ra có chất lượng cao nhưng không phù hợp với các ứng dụng mã hóa.
Tuyên ngôn
public struct ThreefryRandomNumberGenerator : SeedableRandomNumberGenerator
Triển khai
SeedableRandomNumberGenerator
bằng Philox. Cá hồi và cộng sự. SC 2011. Các số ngẫu nhiên song song: dễ như 1, 2, 3. http://www.thesalmons.org/john/random123/papers/random123sc11.pdfCấu trúc này triển khai PRNG Philox4x32 10 vòng. Nó phải được gieo với giá trị 64-bit.
Một trình tạo riêng lẻ không an toàn cho luồng, nhưng các trình tạo riêng biệt không chia sẻ trạng thái. Dữ liệu ngẫu nhiên được tạo ra có chất lượng cao nhưng không phù hợp với các ứng dụng mã hóa.
Tuyên ngôn
public struct PhiloxRandomNumberGenerator : SeedableRandomNumberGenerator
Tuyên ngôn
@frozen public struct UniformIntegerDistribution<T> : RandomDistribution where T : FixedWidthInteger
Tuyên ngôn
@frozen public struct UniformFloatingPointDistribution<T: BinaryFloatingPoint>: RandomDistribution where T.RawSignificand: FixedWidthInteger
Tuyên ngôn
@frozen public struct NormalDistribution<T: BinaryFloatingPoint>: RandomDistribution where T.RawSignificand: FixedWidthInteger
Tuyên ngôn
@frozen public struct BetaDistribution : RandomDistribution
Một đầu vào của mạng nơ-ron hồi quy.
Tuyên ngôn
public struct RNNCellInput<Input, State> : Differentiable where Input : Differentiable, State : Differentiable
extension RNNCellInput: EuclideanDifferentiable where Input: EuclideanDifferentiable, State: EuclideanDifferentiable
Một đầu ra cho một mạng lưới thần kinh tái phát.
Tuyên ngôn
public struct RNNCellOutput<Output, State> : Differentiable where Output : Differentiable, State : Differentiable
extension RNNCellOutput: EuclideanDifferentiable where Output: EuclideanDifferentiable, State: EuclideanDifferentiable
Một tế bào RNN cơ bản.
Tuyên ngôn
public struct BasicRNNCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
Một tế bào LSTM.
Tuyên ngôn
public struct LSTMCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
Một tế bào GRU.
Tuyên ngôn
public struct GRUCell<Scalar> : RecurrentLayerCell where Scalar : TensorFlowFloatingPoint
Tuyên ngôn
public struct RecurrentLayer<Cell> : Layer where Cell : RecurrentLayerCell
extension RecurrentLayer: Equatable where Cell: Equatable
extension RecurrentLayer: AdditiveArithmetic where Cell: AdditiveArithmetic
Tuyên ngôn
public struct BidirectionalRecurrentLayer<Cell: RecurrentLayerCell>: Layer where Cell.TimeStepOutput: Mergeable
Một lớp bao gồm hai hoặc nhiều lớp khác một cách tuần tự.
Ví dụ:
- Xây dựng mô hình perceptron 2 lớp đơn giản cho MNIST:
let inputSize = 28 * 28 let hiddenSize = 300 var classifier = Sequential { Dense<Float>(inputSize: inputSize, outputSize: hiddenSize, activation: relu) Dense<Float>(inputSize: hiddenSize, outputSize: 3, activation: identity) }
- Xây dựng bộ mã hóa tự động cho MNIST:
var autoencoder = Sequential { // The encoder. Dense<Float>(inputSize: 28 * 28, outputSize: 128, activation: relu) Dense<Float>(inputSize: 128, outputSize: 64, activation: relu) Dense<Float>(inputSize: 64, outputSize: 12, activation: relu) Dense<Float>(inputSize: 12, outputSize: 3, activation: relu) // The decoder. Dense<Float>(inputSize: 3, outputSize: 12, activation: relu) Dense<Float>(inputSize: 12, outputSize: 64, activation: relu) Dense<Float>(inputSize: 64, outputSize: 128, activation: relu) Dense<Float>(inputSize: 128, outputSize: imageHeight * imageWidth, activation: tanh) }
Tuyên ngôn
@_functionBuilder public struct LayerBuilder
ShapedArray
là một mảng nhiều chiều. Nó có hình dạng, có kiểu[Int]
và xác định kích thước mảng, đồng thời sử dụngTensorBuffer
bên trong làm bộ lưu trữ.Tuyên ngôn
@frozen public struct ShapedArray<Scalar> : _ShapedArrayProtocol
extension ShapedArray: RandomAccessCollection, MutableCollection
extension ShapedArray: CustomStringConvertible
extension ShapedArray: CustomPlaygroundDisplayConvertible
extension ShapedArray: CustomReflectable
extension ShapedArray: ExpressibleByArrayLiteral where Scalar: TensorFlowScalar
extension ShapedArray: Equatable where Scalar: Equatable
extension ShapedArray: Hashable where Scalar: Hashable
extension ShapedArray: Codable where Scalar: Codable
Một lát liền kề của một phiên bản
ShapedArray
hoặcShapedArraySlice
.ShapedArraySlice
cho phép vận hành nhanh chóng, hiệu quả trên các lát liền kề của các phiên bảnShapedArray
. Các phiên bảnShapedArraySlice
không có bộ lưu trữ riêng. Thay vào đó, họ cung cấp chế độ xem về bộ lưu trữShapedArray
cơ sở của họ.ShapedArraySlice
có thể biểu diễn hai loại lát cắt khác nhau: mảng phần tử và mảng con.Mảng phần tử là các phần tử có chiều thứ nguyên phụ của
ShapedArray
: thứ hạng của chúng nhỏ hơn một bậc so với cơ sở của chúng. Các lát mảng phần tử thu được bằng cách lập chỉ mục một thể hiệnShapedArray
với chỉ mụcInt32
số ít.Ví dụ:
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]].
Mảng con là một phạm vi liền kề của các phần tử trong
ShapedArray
. Thứ hạng của một mảng con giống như thứ hạng của mảng cơ sở, nhưng thứ nguyên chính của nó là số lượng của phạm vi lát cắt. Các lát cắt mảng con thu được bằng cách lập chỉ mục mộtShapedArray
vớiRange<Int32>
đại diện cho một phạm vi phần tử (trong chiều thứ nguyên chính). Các phương thức nhưprefix(:)
vàsuffix(:)
lập chỉ mục nội bộ với một phạm vi cũng tạo ra mảng con.Ví dụ:
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]].
Tuyên ngôn
@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
StringTensor
là một mảng đa chiều có các phần tử làString
s.Tuyên ngôn
@frozen public struct StringTensor
extension StringTensor: TensorGroup
TensorHandle
là loại được sử dụng bởi ops. Nó bao gồm một kiểuScalar
mà phần bên trong của trình biên dịch có thể sử dụng để xác định kiểu dữ liệu của các tham số khi chúng được trích xuất thành chương trình tensor.Tuyên ngôn
public struct TensorHandle<Scalar> where Scalar : _TensorFlowDataTypeCompatible
extension TensorHandle: TensorGroup
Tuyên ngôn
public struct ResourceHandle
extension ResourceHandle: TensorGroup
Tuyên ngôn
public struct VariantHandle
extension VariantHandle: TensorGroup
Một cấu trúc biểu diễn hình dạng của tensor.
TensorShape
là một lớp bao bọc mỏng xung quanh một mảng các số nguyên biểu thị kích thước hình dạng. Tất cả các loại tensor đều sử dụngTensorShape
để thể hiện hình dạng của chúng.Tuyên ngôn
@frozen public struct TensorShape : ExpressibleByArrayLiteral
extension TensorShape: Collection, MutableCollection
extension TensorShape: RandomAccessCollection
extension TensorShape: RangeReplaceableCollection
extension TensorShape: Equatable
extension TensorShape: Codable
extension TensorShape: CustomStringConvertible
TensorVisitorPlan gần đúng
[WritableKeyPath<Base, Tensor<Float>]
nhưng hiệu quả hơn. Điều này hữu ích khi viết các trình tối ưu hóa chung muốn ánh xạ theo độ dốc, trọng số hiện có và chỉ mục có thể được sử dụng để tìm trọng số được lưu trữ phụ trợ. Điều này hiệu quả hơn một chút (~2 lần) nhưng có thể tốt hơn vì nó đánh đổi chi phí cao hơn một chút (tham chiếu con trỏ bổ sung) để không phải thực hiện công việc O(độ sâu_of_tree) được yêu cầu với một danh sách đơn giản để theo dõi từng KeyPath riêng lẻ.Tuyên ngôn
public struct TensorVisitorPlan<Base>
Một lớp lấy mẫu cho đầu vào 1-D.
Tuyên ngôn
@frozen public struct UpSampling1D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Một lớp lấy mẫu cho đầu vào 2-D.
Tuyên ngôn
@frozen public struct UpSampling2D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Một lớp lấy mẫu cho đầu vào 3-D.
Tuyên ngôn
@frozen public struct UpSampling3D<Scalar> : ParameterlessLayer where Scalar : TensorFlowFloatingPoint
Thu thập các bộ đếm dự đoán chính xác và tổng số tổn thất.
Tuyên ngôn
public struct HostStatistics