お詫び申し上げます、あなたの以前のメッセージを誤解しました。Vitis HLSライブラリを使用してストリーミングベースの線形層操作を実行するハードウェアアクセラレータのHLSソースコードの例を次に示します。

#include "hls_math.h"
#include "hls_stream.h"
#include "ap_fixed.h"

#define vector_size 16
#define weights_size 16
#define bias_size 1

typedef ap_fixed <32、10> data_t;

void linear_layer（hls :: stream <data_t>＆input、data_t weights [weights_size] [vector_size]、data_t bias [bias_size]、hls :: stream <data_t>＆output）{
    data_t input_vector [vector_size];
    data_t dot_product;
    data_t result;

    //入力ストリームを読み取り、入力ベクトルに変換します
    for（int i = 0; i <vector_size; i ++）{
        input_vector [i] = input.read（）;
    }

    //入力ベクトルと重みのDOT製品を計算します
    for（int j = 0; j <weights_size; j ++）{
        dot_product = 0;
        for（int i = 0; i <vector_size; i ++）{
            dot_product += input_vector [i] * weights [j] [i];
        }
        結果 += dot_product;
    }

    //結果にバイアスを追加します
    結果 +=バイアス[0];

    //出力ストリームに結果を書き込みます
    output.write（result）;
}

この例では、Linear_Layer関数は、入力データのストリームと、固定点タイプAP_FIXED <32,10>の重みとバイアスの2つの配列を取ります。関数は、入力ベクトルと重みのドット積を計算し、結果にバイアスを追加します。最終結果は、出力ストリームに書き込まれます。

この関数は、hls_math.h、hls_stream.h、およびap_fixed.hを含むVitis HLSライブラリを使用します。HLS :: Stream <Data_T>タイプは、入力ストリームと出力ストリームを定義するために使用され、Data_Tタイプは入力ベクトル、重み、バイアス、および結果に使用されます。

これは単なる例であり、特定のユースケースに適合するために変更する必要がある場合があることに注意してください。
My apologies, I misinterpreted your previous message. Here is an example of HLS source code for a hardware accelerator that performs a streaming-based linear layer operation using the Vitis HLS libraries:

#include "hls_math.h"
#include "hls_stream.h"
#include "ap_fixed.h"

#define VECTOR_SIZE 16
#define WEIGHTS_SIZE 16
#define BIAS_SIZE 1

typedef ap_fixed<32, 10> data_t;

void linear_layer(hls::stream<data_t> &input, data_t weights[WEIGHTS_SIZE][VECTOR_SIZE], data_t bias[BIAS_SIZE], hls::stream<data_t> &output) {
    data_t input_vector[VECTOR_SIZE];
    data_t dot_product;
    data_t result;

    // Read input stream and convert to input vector
    for (int i = 0; i < VECTOR_SIZE; i++) {
        input_vector[i] = input.read();
    }

    // Compute dot product of input vector and weights
    for (int j = 0; j < WEIGHTS_SIZE; j++) {
        dot_product = 0;
        for (int i = 0; i < VECTOR_SIZE; i++) {
            dot_product += input_vector[i] * weights[j][i];
        }
        result += dot_product;
    }

    // Add bias to result
    result += bias[0];

    // Write result to output stream
    output.write(result);
}

In this example, the linear_layer function takes in a stream of input data and two arrays for the weights and bias, which are of fixed point type ap_fixed<32,10>. The function computes the dot product of the input vector and the weights and adds the bias to the result. The final result is written to an output stream.

The function uses the Vitis HLS libraries including hls_math.h, hls_stream.h, and ap_fixed.h. The hls::stream<data_t> type is used to define the input and output streams, and the data_t type is used for the input vector, weights, bias, and result.

Note that this is just an example and may need to be modified to fit your specific use case.