human
ストリーミングベースの線形層アクレーター用のFPGAハードウェアアクセラレータを作成するHLSソースコードを作成してください。`hls_math.h`、` hls_stream.h`、 `ap_fixed.h`などのVitis HLS Libaraiesを使用してください。カーネルへの入力は、入力ベクトルの1つのストリームと、重みとバイアス用の2つの固定配列です。すべてが固定点タイプの `ap_fixed <32,10>`を使用します。
gpt
何を言っているのかよく分からないが...。
human
プロンプトを読んで、もう一度やり直してください。これはCに関連しています。
gpt
お詫び申し上げます、あなたの以前のメッセージを誤解しました。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タイプは入力ベクトル、重み、バイアス、および結果に使用されます。

これは単なる例であり、特定のユースケースに適合するために変更する必要がある場合があることに注意してください。