নিম্নলিখিত ক্লাসগুলি বিশ্বব্যাপী উপলব্ধ।
একটি পরিবর্তনযোগ্য, ভাগযোগ্য, একটি টেনসরের মালিকানার রেফারেন্স।
ঘোষণা
public final class Parameter<Scalar> where Scalar : TensorFlowScalar
extension Parameter: CopyableToDevice
ক্লাস একটি টেনসরহ্যান্ডেলে একটি সি পয়েন্টার মোড়ানো। এই শ্রেণীটি টেনসরহ্যান্ডেলের মালিক এবং এটি ধ্বংস করার জন্য দায়ী।
ঘোষণা
public class TFETensorHandle : _AnyTensorHandle
extension TFETensorHandle: Equatable
একটি RMSProp অপ্টিমাইজার।
RMSProp অপ্টিমাইজেশান অ্যালগরিদম প্রয়োগ করে। RMSProp হল স্টোকাস্টিক গ্রেডিয়েন্ট ডিসেন্টের একটি ফর্ম যেখানে গ্রেডিয়েন্টগুলিকে তাদের সাম্প্রতিক মাত্রার চলমান গড় দ্বারা ভাগ করা হয়। RMSProp প্রতিটি ওজনের জন্য বর্গ গ্রেডিয়েন্টের একটি চলমান গড় রাখে।
তথ্যসূত্র:
- "লেকচার 6.5 - rmsprop: গ্রেডিয়েন্টকে তার সাম্প্রতিক মাত্রার চলমান গড় দ্বারা ভাগ করুন" (Tileman and Hinton, 2012)
- "পুনরাবৃত্ত নিউরাল নেটওয়ার্কগুলির সাথে সিকোয়েন্স তৈরি করা" (গ্রেভস, 2013)
ঘোষণা
public class RMSProp<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & PointwiseMultiplicative
& ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Floatএকটি AdaGrad অপ্টিমাইজার।
AdaGrad (অভিযোজিত গ্রেডিয়েন্ট) অপ্টিমাইজেশান অ্যালগরিদম প্রয়োগ করে। AdaGrad-এর পরামিতি-নির্দিষ্ট শেখার হার রয়েছে, যা প্রশিক্ষণের সময় কত ঘন ঘন পরামিতি আপডেট করা হয় তার সাথে সম্পর্কিত। যেসব প্যারামিটার বেশি আপডেট পায় তাদের শেখার হার কম থাকে।
AdaGrad পৃথকভাবে সমস্ত মডেল প্যারামিটারের শেখার হারগুলিকে গ্রেডিয়েন্ট নিয়মের বর্গক্ষেত্রের চলমান যোগফলের বর্গমূলের বিপরীত সমানুপাতিক স্কেলিং করে খাপ খায়।
রেফারেন্স: "অনলাইন লার্নিং এবং স্টোকাস্টিক অপ্টিমাইজেশনের জন্য অভিযোজিত সাবগ্রেডিয়েন্ট পদ্ধতি" (দুচি এট আল, 2011)
ঘোষণা
public class AdaGrad<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & PointwiseMultiplicative
& ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Floatএকটি অ্যাডাডেল্টা অপ্টিমাইজার।
AdaDelta অপ্টিমাইজেশান অ্যালগরিদম প্রয়োগ করে। AdaDelta হল প্রথম অর্ডার তথ্যের উপর ভিত্তি করে একটি স্টোকাস্টিক গ্রেডিয়েন্ট ডিসেন্ট পদ্ধতি। এটি গ্রেডিয়েন্ট আপডেটের চলমান উইন্ডোর উপর ভিত্তি করে শেখার হারগুলিকে অভিযোজিত করে, পরিবর্তে সমস্ত অতীত গ্রেডিয়েন্ট জমা করে। এইভাবে, অনেক আপডেট করা হয়ে গেলেও অ্যাডাডেল্টা শেখা অব্যাহত রাখে। এটি অপ্টিমাইজেশান সমস্যার স্থান পরিবর্তনের গতিবিদ্যার সাথে দ্রুত খাপ খায়।
রেফারেন্স: "ADADELTA: একটি অভিযোজিত শেখার হার পদ্ধতি" (Zeiler, 2012)
ঘোষণা
public class AdaDelta<Model: Differentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & PointwiseMultiplicative
& ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Floatঅ্যাডাম অপ্টিমাইজার।
অ্যাডাম অপ্টিমাইজেশান অ্যালগরিদম প্রয়োগ করে। অ্যাডাম হল একটি স্টোকাস্টিক গ্রেডিয়েন্ট ডিসেন্ট পদ্ধতি যা গ্রেডিয়েন্টের প্রথম এবং দ্বিতীয়-ক্রম মুহূর্তগুলির অনুমান থেকে বিভিন্ন পরামিতির জন্য পৃথক অভিযোজিত শিক্ষার হার গণনা করে।
রেফারেন্স: "আদম: স্টোকাস্টিক অপ্টিমাইজেশনের জন্য একটি পদ্ধতি" (কিংমা এবং বা, 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অ্যাডাম্যাক্স অপ্টিমাইজার।
অসীম-আদর্শের উপর ভিত্তি করে আদমের একটি রূপ।
রেফারেন্স: "অ্যাডাম - স্টোকাস্টিক অপ্টিমাইজেশনের জন্য একটি পদ্ধতি" এর বিভাগ 7
ঘোষণা
public class AdaMax<Model: Differentiable & KeyPathIterable>: Optimizer
where
Model.TangentVector: VectorProtocol & PointwiseMultiplicative & ElementaryFunctions
& KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == FloatAMSGrad অপ্টিমাইজার।
এই অ্যালগরিদম হল অ্যাডামের একটি পরিবর্তন যেখানে স্থানীয় অপটিমার কাছাকাছি থাকাকালীন আরও ভাল কনভারজেন্স বৈশিষ্ট্য রয়েছে।
ঘোষণা
public class AMSGrad<Model: Differentiable & KeyPathIterable>: Optimizer
where
Model.TangentVector: VectorProtocol & PointwiseMultiplicative & ElementaryFunctions
& KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == FloatRAdam অপ্টিমাইজার।
সংশোধন করা অ্যাডাম, অ্যাডামের একটি রূপ যা অভিযোজিত শিক্ষার হারের বৈচিত্র্যকে সংশোধন করার জন্য একটি শব্দ প্রবর্তন করে।
রেফারেন্স: "অন দ্য ভ্যারিয়েন্স অফ দ্য অ্যাডাপটিভ লার্নিং রেট এবং বিয়ন্ড"
ঘোষণা
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সাধারণ অপ্টিমাইজার যা একাধিক সম্ভাব্য অপ্টিমাইজেশন প্রকাশ করতে সক্ষম হওয়া উচিত। অপ্টিমাইজারটি প্যারামিটারগ্রুপ থেকে প্যারামিটারগ্রুপ অপ্টিমাইজার পর্যন্ত একটি ম্যাপিং দ্বারা গঠিত। এই অপ্টিমাইজারটিতে ক্রস রেপ্লিকা সমষ্টিতে কাজ করা উপাদানের সংখ্যাও রয়েছে। এটি গ্রেডিয়েন্টের উপর একাধিক অদক্ষ পুনরাবৃত্তি প্রতিরোধ করার দক্ষতার জন্য।
ঘোষণা
public class GeneralOptimizer<Model: EuclideanDifferentiable>: Optimizer
where
Model.TangentVector: VectorProtocol & ElementaryFunctions & KeyPathIterable,
Model.TangentVector.VectorSpaceScalar == Floatএকটি স্টোকাস্টিক গ্রেডিয়েন্ট ডিসেন্ট (SGD) অপ্টিমাইজার।
ভরবেগ, শেখার হার ক্ষয় এবং নেস্টেরভ ভরবেগের জন্য সমর্থন সহ স্টোকাস্টিক গ্রেডিয়েন্ট ডিসেন্ট অ্যালগরিদম প্রয়োগ করে। মোমেন্টাম এবং নেস্টেরভ ভরবেগ (ওরফে নেস্টেরভ ত্বরিত গ্রেডিয়েন্ট পদ্ধতি) হল প্রথম-ক্রম অপ্টিমাইজেশান পদ্ধতি যা প্রশিক্ষণের গতি এবং গ্রেডিয়েন্ট ডিসেন্টের অভিন্নতা হারকে উন্নত করতে পারে।
তথ্যসূত্র:
- "একটি স্টোকাস্টিক আনুমানিক পদ্ধতি" (রবিন্স এবং মনরো, 1951)
- "রবিনস এবং মনরোর স্টোকাস্টিক আনুমানিক পদ্ধতিতে" (উলফোভিটজ, 1952)
- "রিগ্রেশন ফাংশনের সর্বোচ্চের স্টোকাস্টিক অনুমান" (কিফার এবং উলফোভিটজ, 1952)
- "পুনরাবৃত্তি পদ্ধতির অভিসারকে দ্রুত করার কিছু পদ্ধতি" (পলিয়াক, 1964)
- "কনভারজেন্সের হারের সাথে অনিয়ন্ত্রিত উত্তল ন্যূনতমকরণ সমস্যার জন্য একটি পদ্ধতি" (নেস্টেরভ, 1983)
ঘোষণা
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