2025年9月17日 大模型Attention模块开发(通过率100%)

#include<iostream>
#include<vector>
#include<cmath>
using namespace std;

vector<vector<double>> compute_matrix(vector<vector<double>> X, vector<vector<double>> W){
    int n=X.size();
    int m=X[0].size();
    int h=W[0].size();
    vector<vector<double>> Q(n, vector<double>(h));
    for(int i=0;i<n;i++){
        for(int j=0;j<h;j++){
            double sum=0;
            for(int k=0;k<m;k++){
                sum+=X[i][k]*W[k][j];
            }
            Q[i][j]=sum;
        }
    }
    return Q;
}
vector<vector<double>> compute_T(vector<vector<double>> X){
    int n=X.size();
    int m=X[0].size();
    vector<vector<double>> R(m,vector<double>(n));
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++){
            R[i][j]=X[j][i];
        }
    }
    return R;
}

vector<vector<double>> compute_softmax(vector<vector<double>> X){
    int n=X.size();
    int m=X[0].size();
    vector<double> mi(m);
    for(int j=0;j<m;j++){
        double sum=0;
        for(int i=0;i<n;i++){
            sum+=X[i][j];
        }
        mi[j]=sum;
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            X[i][j]=X[i][j]/mi[j];
        }
    }
    return X;
}
vector<vector<double>> matrix_div(vector<vector<double>> X,double a){
    int n=X.size();
    int m=X[0].size();
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            X[i][j]=X[i][j]/a;
        }
    }
    return X;
}

int main(){
    int n,m,h;
    cin>>n>>m>>h;
    vector<vector<double>> X(n, vector<double>(m,1));
    vector<vector<double>> W(m, vector<double>(h,0));
    for(int i=0;i<m;i++){
        for(int j=i;j<h;j++){
            W[i][j]=1;
        }
    }
    vector<vector<double>> Q(n, vector<double>(h));
    Q=compute_matrix(X,W);
    vector<vector<double>> K=Q;
    vector<vector<double>> V=Q;

    vector<vector<double>> Y(n, vector<double>(h));
    Y=compute_matrix(compute_softmax(matrix_div(compute_matrix(Q,compute_T(K)),sqrt(h))), V);
    double result=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<h;j++){
            result+=Y[i][j];
        }
    }
    cout<<round(result)<<endl;
    return 0;
}

2025年9月3日 大模型训练MOE场景路由优化算法(通过率100%)

#include<iostream>
#include<unordered_map>
#include<vector>
#include<algorithm>
using namespace std;
struct sample{
    int idx;
    int group;
    double pro;
};

bool m_n(sample a, sample b){
    if(a.pro==b.pro) return a.idx<b.idx;
    return a.pro>b.pro;
}


int main(){
    int n,m,p,k;
    cin>>n>>m>>p>>k;
    vector<double> pr(n);
    for(int i=0;i<n;i++){
        cin>>pr[i];
    }
    int a=n/m;
    if(n%m!=0||m<p||a*p<k) cout<<"error"<<endl;
    else{
        
        vector<sample> map;
        
        int group=0;
        for(int i=0;i<n;i=i+a){
            double b=pr[i];
            int idx=i;
            for(int j=i+1;j<i+a;j++){
                if(b<pr[j]){
                    b=pr[j];
                    idx=j;
                }
            }
            map.push_back({idx,group,b});
            group++;
        }
        sort(map.begin(),map.end(),m_n);
        vector<int> map2;
        for(int i=0;i<p;i++){
            map2.push_back(map[i].group);
        }
        vector<sample> map3;//用push_back就不要初始化大小
        
        for(int i=0;i<p;i++){
            int group=map2[i];
            for(int j=group*a;j<group*a+a;j++){
                map3.push_back({j,group,pr[j]});
            }
        }
        sort(map3.begin(),map3.end(),m_n);
        vector<int> map4;
        for(int i=0;i<k;i++){
            map4.push_back(map3[i].idx);
        }
        sort(map4.begin(),map4.end());
        for(int i=0;i<k;i++){
            if(i<k-1)
                cout<<map4[i]<<" ";
            else 
                cout<<map4[i]<<endl;
        }
    }
    return 0;
}
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐