मध्यम 0 हल किए गए 0% स्वीकृति

Dense Layer Forward Pass

Compute the outputs of a fully connected layer of neurons with a choice of activation.

आप क्या सीखेंगे

  • Compute a full layer of neurons at once
  • Apply a chosen activation to each output
  • Organize weights as one row per neuron

समस्या

अनुवाद दिखाएँ

A dense layer is a group of neurons that all receive the same inputs. Neuron j has its own weights weights[j] and bias biases[j]:

z_j = inputs · weights[j] + biases[j]

Then the layer's activation is applied to each z_j:

  • "linear": output z_j unchanged
  • "relu": max(0, z_j)
  • "sigmoid": 1 / (1 + e^(-z_j))

Implement dense_forward(inputs, weights, biases, activation).

Input

inputs: The n input values.

weights: One row per neuron; each row has n weights.

biases: One bias per neuron.

activation: "linear", "relu" or "sigmoid".

Output

Return the list of outputs, one per neuron, in order.

सीमाएँ

1 ≤ n ≤ 100, 1 ≤ number of neurons ≤ 100

-10 ≤ each value ≤ 10

उदाहरण

उदाहरण 1
इनपुट:
biases = [0.0, -1.0]
inputs = [1.0, 2.0]
weights = [
    [0.5, -1.0],
    [1.5, 0.5]
]
activation = "relu"

अपेक्षित आउटपुट:
expected = [0.0, 1.5]
इनपुट:
std::vector<double> biases = {0.0, -1.0};
std::vector<double> inputs = {1.0, 2.0};
std::vector<std::vector<double>> weights = {
    {0.5, -1.0},
    {1.5, 0.5}
};
std::string activation = "relu";

अपेक्षित आउटपुट:
std::vector<double> expected = {0.0, 1.5};
इनपुट:
double[] biases = new double[] {0.0, -1.0};
double[] inputs = new double[] {1.0, 2.0};
double[][] weights = new double[][] {
    new double[] {0.5, -1.0},
    new double[] {1.5, 0.5}
};
string activation = "relu";

अपेक्षित आउटपुट:
double[] expected = new double[] {0.0, 1.5};

व्याख्या

Neuron 1: 1×0.5 + 2×(-1) + 0 = -1.5, and ReLU gives 0. Neuron 2: 1×1.5 + 2×0.5 - 1 = 1.5, which ReLU keeps. Result: [0, 1.5].

उदाहरण 2
इनपुट:
biases = [1.0, 0.0, -1.5]
inputs = [3.0]
weights = [
    [2.0],
    [-1.0],
    [0.5]
]
activation = "linear"

अपेक्षित आउटपुट:
expected = [7.0, -3.0, 0.0]
इनपुट:
std::vector<double> biases = {1.0, 0.0, -1.5};
std::vector<double> inputs = {3.0};
std::vector<std::vector<double>> weights = {
    {2.0},
    {-1.0},
    {0.5}
};
std::string activation = "linear";

अपेक्षित आउटपुट:
std::vector<double> expected = {7.0, -3.0, 0.0};
इनपुट:
double[] biases = new double[] {1.0, 0.0, -1.5};
double[] inputs = new double[] {3.0};
double[][] weights = new double[][] {
    new double[] {2.0},
    new double[] {-1.0},
    new double[] {0.5}
};
string activation = "linear";

अपेक्षित आउटपुट:
double[] expected = new double[] {7.0, -3.0, 0.0};

व्याख्या

With a linear activation the outputs are just 3×2 + 1 = 7, 3×(-1) + 0 = -3 and 3×0.5 - 1.5 = 0.

संदर्भ

यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।

दूसरों से सीखें

समुदाय समाधान

अभी तक कोई प्रकाशित समाधान नहीं। पहला साझा करने के लिए इस चुनौती को हल करें।