@frozen
public struct Dense<Scalar> : Layer where Scalar : TensorFlowFloatingPoint
طبقة شبكة عصبية متصلة بكثافة.
ينفذ Dense
عملية activation(matmul(input, weight) + bias)
، حيث يكون weight
مصفوفة وزن، bias
هو ناقل التحيز، activation
هو وظيفة تنشيط حكيمة للعنصر.
تدعم هذه الطبقة أيضًا موترات الوزن ثلاثية الأبعاد بمصفوفات التحيز ثنائية الأبعاد. في هذه الحالة، يتم التعامل مع البعد الأول لكليهما على أنه حجم الدُفعة الذي يتماشى مع البعد الأول input
ويتم استخدام متغير الدُفعة لعملية matmul(_:_:)
، وبالتالي استخدام وزن وتحيز مختلفين لكل عنصر في دفعة الإدخال.
مصفوفة الوزن.
تصريح
public var weight: Tensor<Scalar>
ناقل التحيز.
تصريح
public var bias: Tensor<Scalar>
وظيفة التنشيط الحكيمة للعنصر.
تصريح
@noDerivative public let activation: Activation
ينشئ مثيلًا من الوزن المحدد والتحيز الاختياري ووظيفة التنشيط.
ملحوظة
حاليا،weight
هو المعلمة الوحيدة للتمييز. يمكن جعلbias
معلمة قابلية للتمييز بعد أن يتوافقOptional
المشروط معDifferentiable
: TF-499.تصريح
@differentiable(wrt: weight) public init( weight: Tensor<Scalar>, bias: Tensor<Scalar>? = nil, activation: @escaping Activation )
ينشئ طبقة
Dense
بحجم الإدخال المحدد وحجم الإخراج ووظيفة التنشيط حسب العناصر. يتم إنشاء مصفوفة الوزن بالشكل[inputSize, outputSize]
ويتم إنشاء متجه التحيز بالشكل[outputSize]
.تصريح
public init( inputSize: Int, outputSize: Int, activation: @escaping Activation = identity, useBias: Bool = true, weightInitializer: ParameterInitializer<Scalar> = glorotUniform(), biasInitializer: ParameterInitializer<Scalar> = zeros() )
حدود
inputSize
أبعاد مساحة الإدخال.
outputSize
أبعاد مساحة الإخراج.
activation
وظيفة التنشيط للاستخدام. القيمة الافتراضية هي
identity(_:)
.weightInitializer
مُهيئ لاستخدامه في
weight
.biasInitializer
مُهيئ لاستخدامه في
bias
.