صفوف

الفئات التالية متاحة عالميًا.

  • إشارة ملكية قابلة للتغيير وقابلة للمشاركة إلى الموتر.

    تصريح

    public final class Parameter<Scalar> where Scalar : TensorFlowScalar
    extension Parameter: CopyableToDevice
  • فئة التفاف مؤشر C إلى TensorHandle. تمتلك هذه الفئة TensorHandle وهي المسؤولة عن تدميرها.

    تصريح

    public class TFETensorHandle : _AnyTensorHandle
    extension TFETensorHandle: Equatable
  • محسن RMSProp.

    ينفذ خوارزمية التحسين RMSProp. RMSProp هو شكل من أشكال النسب التدرج العشوائي حيث يتم تقسيم التدرجات على متوسط ​​تشغيل حجمها الحديث. يحتفظ RMSProp بمتوسط ​​متحرك للتدرج المربع لكل وزن.

    مراجع:

    تصريح

    public class RMSProp<Model: Differentiable>: Optimizer
    where
      Model.TangentVector: VectorProtocol & PointwiseMultiplicative
        & ElementaryFunctions & KeyPathIterable,
      Model.TangentVector.VectorSpaceScalar == Float
  • محسن AdaGrad.

    تنفيذ خوارزمية تحسين AdaGrad (التدرج التكيفي). يتمتع AdaGrad بمعدلات تعلم خاصة بالمعلمات، والتي يتم تكييفها وفقًا لعدد مرات تحديث المعلمات أثناء التدريب. المعلمات التي تتلقى المزيد من التحديثات لها معدلات تعلم أقل.

    يقوم AdaGrad بتكييف معدلات التعلم لجميع معلمات النموذج بشكل فردي عن طريق قياسها بما يتناسب عكسيًا مع الجذر التربيعي للمجموع الجاري لمربعات معايير التدرج.

    المرجع: "أساليب التدرج التكيفي للتعلم عبر الإنترنت والتحسين العشوائي" (Duchi et al, 2011)

    تصريح

    public class AdaGrad<Model: Differentiable>: Optimizer
    where
      Model.TangentVector: VectorProtocol & PointwiseMultiplicative
        & ElementaryFunctions & KeyPathIterable,
      Model.TangentVector.VectorSpaceScalar == Float
  • محسن AdaDelta.

    ينفذ خوارزمية التحسين AdaDelta. AdaDelta هي طريقة نزول متدرجة عشوائية تعتمد على معلومات الترتيب الأول. فهو يكيف معدلات التعلم بناءً على نافذة متحركة من تحديثات التدرج، بدلاً من تجميع كل التدرجات السابقة. وهكذا، يستمر AdaDelta في التعلم حتى بعد إجراء العديد من التحديثات. يتكيف بشكل أسرع مع الديناميكيات المتغيرة لمساحة مشكلة التحسين.

    المرجع: "ADADELTA: طريقة معدل التعلم التكيفي" (زيلر، 2012)

    تصريح

    public class AdaDelta<Model: Differentiable>: Optimizer
    where
      Model.TangentVector: VectorProtocol & PointwiseMultiplicative
        & ElementaryFunctions & KeyPathIterable,
      Model.TangentVector.VectorSpaceScalar == Float
  • آدم محسن.

    ينفذ خوارزمية التحسين آدم. آدم هي طريقة نزول متدرجة عشوائية تحسب معدلات التعلم التكيفي الفردية لمعلمات مختلفة من تقديرات لحظات التدرج من الدرجة الأولى والثانية.

    المرجع: "آدم: طريقة للتحسين العشوائي" (Kingma and Ba, 2014).

    أمثلة:

    • تدريب وكيل التعلم المعزز البسيط:
    ...
    // Instantiate an agent's policy - approximated by the neural network (`net`) after defining it 
    in advance.
    var net = Net(observationSize: Int(observationSize), hiddenSize: hiddenSize, actionCount: actionCount)
    // Define the Adam optimizer for the network with a learning rate set to 0.01.
    let optimizer = Adam(for: net, learningRate: 0.01)
    ...
    // Begin training the agent (over a certain number of episodes).
    while true {
    ...
        // Implementing the gradient descent with the Adam optimizer:
        // Define the gradients (use withLearningPhase to call a closure under a learning phase).
        let gradients = withLearningPhase(.training) {
            TensorFlow.gradient(at: net) { net -> Tensor<Float> in
                // Return a softmax (loss) function
                return loss = softmaxCrossEntropy(logits: net(input), probabilities: target)
            }
        }
        // Update the differentiable variables of the network (`net`) along the gradients with the Adam 
    optimizer.
        optimizer.update(&net, along: gradients)
        ...
        }
    }
    
    • تدريب شبكة الخصومة التوليدية (GAN):
    ...
    // Instantiate the generator and the discriminator networks after defining them.
    var generator = Generator()
    var discriminator = Discriminator()
    // Define the Adam optimizers for each network with a learning rate set to 2e-4 and beta1 - to 0.5.
    let adamOptimizerG = Adam(for: generator, learningRate: 2e-4, beta1: 0.5)
    let adamOptimizerD = Adam(for: discriminator, learningRate: 2e-4, beta1: 0.5)
    ...
    Start the training loop over a certain number of epochs (`epochCount`).
    for epoch in 1...epochCount {
        // Start the training phase.
        ...
        for batch in trainingShuffled.batched(batchSize) {
            // Implementing the gradient descent with the Adam optimizer:
            // 1) Update the generator.
            ...
            let 𝛁generator = TensorFlow.gradient(at: generator) { generator -> Tensor<Float> in
                ...
                return loss
                }
            // Update the differentiable variables of the generator along the gradients (`𝛁generator`) 
            // with the Adam optimizer.
            adamOptimizerG.update(&generator, along: 𝛁generator)
    
            // 2) Update the discriminator.
            ...
            let 𝛁discriminator = TensorFlow.gradient(at: discriminator) { discriminator -> Tensor<Float> in
                ...
                return loss
            }
            // Update the differentiable variables of the discriminator along the gradients (`𝛁discriminator`) 
            // with the Adam optimizer.
            adamOptimizerD.update(&discriminator, along: 𝛁discriminator)
            }
    }       
    

    تصريح

    public class Adam<Model: Differentiable>: Optimizer
    where
      Model.TangentVector: VectorProtocol & PointwiseMultiplicative
        & ElementaryFunctions & KeyPathIterable,
      Model.TangentVector.VectorSpaceScalar == Float
  • محسن AdaMax.

    نوع مختلف من آدم يعتمد على قاعدة اللانهاية.

    المرجع: القسم 7 من "آدم - طريقة للتحسين العشوائي"

    تصريح

    public class AdaMax<Model: Differentiable & KeyPathIterable>: Optimizer
    where
      Model.TangentVector: VectorProtocol & PointwiseMultiplicative & ElementaryFunctions
        & KeyPathIterable,
      Model.TangentVector.VectorSpaceScalar == Float
  • محسن AMSGrad.

    هذه الخوارزمية عبارة عن تعديل لخوارزمية آدم مع خصائص تقارب أفضل عندما تكون قريبة من الأمثل المحلي.

    المرجع: "في التقاء آدم وما بعده"

    تصريح

    public class AMSGrad<Model: Differentiable & KeyPathIterable>: Optimizer
    where
      Model.TangentVector: VectorProtocol & PointwiseMultiplicative & ElementaryFunctions
        & KeyPathIterable,
      Model.TangentVector.VectorSpaceScalar == Float
  • محسن رادام.

    تصحيح آدم، وهو بديل لآدم يقدم مصطلحًا لتصحيح تباين معدل التعلم التكيفي.

    المرجع: "في تباين معدل التعلم التكيفي وما بعده"

    تصريح

    public class RAdam<Model: Differentiable>: Optimizer
    where
      Model.TangentVector: VectorProtocol & PointwiseMultiplicative & ElementaryFunctions
        & KeyPathIterable,
      Model.TangentVector.VectorSpaceScalar == Float
  • تسلسل لا نهائي من مجموعات دفعات العينات المناسبة لتدريب DNN عندما لا تكون العينات ذات حجم موحد.

    الدفعات في كل عصر:

    • جميعها لديها بالضبط نفس العدد من العينات.
    • يتم تشكيلها من عينات ذات حجم مماثل.
    • ابدأ بدفعة يكون الحد الأقصى لحجم العينة فيها هو الحد الأقصى لحجم جميع العينات المستخدمة في العصر.

    تصريح

    public final class NonuniformTrainingEpochs<
      Samples: Collection,
      Entropy: RandomNumberGenerator
    >: Sequence, IteratorProtocol
  • مُحسِّن عام يجب أن يكون قادرًا على التعبير عن العديد من التحسينات الممكنة. يتكون المحسن من تعيين من ParameterGroup إلى ParameterGroupOptimizer. يحتوي هذا المحسن أيضًا على عدد العناصر التي تعمل في مجموع النسخ المتماثلة. هذا من أجل الكفاءة لمنع التكرارات المتعددة غير الفعالة على التدرج.

    تصريح

    public class GeneralOptimizer<Model: EuclideanDifferentiable>: Optimizer
    where
      Model.TangentVector: VectorProtocol & ElementaryFunctions & KeyPathIterable,
      Model.TangentVector.VectorSpaceScalar == Float
  • محسن النسب التدرج العشوائي (SGD).

    يطبق خوارزمية النسب التدرج العشوائي مع دعم الزخم، وتناقص معدل التعلم، وزخم نيستيروف. يعد الزخم وزخم نيستيروف (المعروف أيضًا باسم طريقة التدرج المتسارع لنيستيروف) من أساليب التحسين من الدرجة الأولى التي يمكنها تحسين سرعة التدريب ومعدل التقارب في نزول التدرج.

    مراجع:

    تصريح

    public class SGD<Model: Differentiable>: Optimizer
    where
      Model.TangentVector: VectorProtocol & ElementaryFunctions & KeyPathIterable,
      Model.TangentVector.VectorSpaceScalar == Float
  • تسلسل لا نهائي من مجموعات عينات الدفعات المناسبة لتدريب DNN عندما تكون العينات موحدة.

    جميع الدفعات في كل عصر لها نفس الحجم تمامًا.

    تصريح

    public final class TrainingEpochs<
      Samples: Collection,
      Entropy: RandomNumberGenerator
    >: Sequence, IteratorProtocol
  • تصريح

    public class EpochPipelineQueue
  • حالة حلقة التدريب على الجهاز.

    تصريح

    public class ThreadState<Model: Layer, Opt: Optimizer>
    where
      Opt.Model == Model, Opt.Scalar == Float, Model.Input == Tensor<Float>,
      Model.Output == Tensor<Float>,
      Model.TangentVector.VectorSpaceScalar == Float