csp202305-2 矩阵运算

简介: csp202305-2 矩阵运算

c8cec58245534394812c270c14481a41.png

01a8b6b523ba4bb78ee933ca0bb3a517.png


优化方法:先k*v,再q*k。(先q*k:n*d×d*n=n*n,改为先k*v:d*n×n*d=d*d,此题d远比n小,所以优化可行)。

#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
const ll maxn = 10005;
ll q[maxn][25];
ll k[25][maxn];
ll v[maxn][25];
ll w[maxn];
ll n, d;
ll kv[25][25];
ll ww[maxn][25];
int main()
{
    cin >> n >> d;
    for (ll i = 1; i <= n; i++)
    {
        for (ll j = 1; j <= d; j++)
        {
            cin >> q[i][j];
        }
    }
    for (ll i = 1; i <= n; i++)
    {
        for (ll j = 1; j <= d; j++)
        {
            cin >> k[j][i];//k转置
        }
    }
    for (ll i = 1; i <= n; i++)
    {
        for (ll j = 1; j <= d; j++)
        {
            cin >> v[i][j];
        }
    }
    for (ll i = 1; i <= n; i++)
    {
        cin >> w[i];
    }
    // k*v
    ll ans = 0;
    for (ll i = 1; i <= d; i++)
    {
        for (ll j = 1; j <= d; j++)
        {
            for (ll kk = 1; kk <= n; kk++)
            {
                ans += k[i][kk] * v[kk][j];
            }
            kv[i][j] = ans;
            ans = 0;
        }
    }
    
    for (ll i = 1; i <= n; i++)
    {
        for (ll j = 1; j <= d; j++)
        {
            for (ll kk = 1; kk <= d; kk++)
            {
                ans += q[i][kk] * kv[kk][j];
            }
            ww[i][j] = ans;
            ans = 0;
        }
    }
    for (ll i = 1; i <= n; i++)
    {
        for (ll j = 1; j <= d; j++)
        {
            ww[i][j] *= w[i];
            cout << ww[i][j] << " ";
        }
        cout << "\n";
    }
}


相关文章
|
9月前
|
机器学习/深度学习 人工智能 数据可视化
图解Transformer——注意力计算原理
图解Transformer——注意力计算原理
223 0
|
17天前
|
机器学习/深度学习 存储 Python
深入剖析SVM核心机制:铰链损失函数的原理与代码实现
铰链损失(Hinge Loss)是支持向量机(SVM)中核心的损失函数,广泛应用于机器学习模型训练。其数学形式为 \( L(y, f(x)) = \max(0, 1 - y \cdot f(x)) \),其中 \( y \) 是真实标签,\( f(x) \) 是预测输出。铰链损失具有凸性、非光滑性和稀疏性等特性,能够最大化分类边际并产生稀疏的支持向量,提高模型泛化能力。它在正确分类、边际内分类和错误分类三种情况下有不同的损失值,适用于线性可分问题且对异常值不敏感。铰链损失通过严格的边际要求和连续梯度信息,提供了高效的优化目标,适合构建鲁棒的分类模型。
152 77
深入剖析SVM核心机制:铰链损失函数的原理与代码实现
|
5月前
|
机器学习/深度学习 数据可视化 Swift
CAS-ViT:用于高效移动应用的卷积加法自注意力视觉Transformer
这是8月份再arxiv上发布的新论文,我们下面一起来介绍这篇论文的重要贡献
265 10
CAS-ViT:用于高效移动应用的卷积加法自注意力视觉Transformer
|
8月前
|
机器学习/深度学习 Java Serverless
Java开发者的神经网络进阶指南:深入探讨交叉熵损失函数
今天来讲一下损失函数——交叉熵函数,什么是损失函数呢?大体就是真实与预测之间的差异,这个交叉熵(Cross Entropy)是Shannon信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息。在信息论中,交叉熵是表示两个概率分布 p,q 的差异,其中 p 表示真实分布,q 表示预测分布,那么 H(p,q)就称为交叉熵:
|
机器学习/深度学习 人工智能 算法
斯坦福大学引入FlashFFTConv来优化机器学习中长序列的FFT卷积
斯坦福大学的FlashFFTConv优化了扩展序列的快速傅里叶变换(FFT)卷积。该方法引入Monarch分解,在FLOP和I/O成本之间取得平衡,提高模型质量和效率。并且优于PyTorch和FlashAttention-v2。它可以处理更长的序列,并在人工智能应用程序中打开新的可能性
108 1
|
机器学习/深度学习 编解码 数据可视化
深度学习基础入门篇[9.2]:卷积之1*1 卷积(残差网络)、2D/3D卷积、转置卷积数学推导、应用实例
深度学习基础入门篇[9.2]:卷积之1*1 卷积(残差网络)、2D/3D卷积、转置卷积数学推导、应用实例
深度学习基础入门篇[9.2]:卷积之1*1 卷积(残差网络)、2D/3D卷积、转置卷积数学推导、应用实例
|
存储 C++
OpenBLAS 中矩阵运算函数学习
OpenBLAS 中矩阵运算函数学习
517 0
|
机器学习/深度学习 存储 算法
PyTorch中的傅立叶卷积:通过FFT有效计算大核卷积的数学原理和代码实现
PyTorch中的傅立叶卷积:通过FFT有效计算大核卷积的数学原理和代码实现
637 0
PyTorch中的傅立叶卷积:通过FFT有效计算大核卷积的数学原理和代码实现
|
机器学习/深度学习 自然语言处理 搜索推荐
自注意力机制(Self-Attention)的基本知识
自注意力机制(Self-Attention)的基本知识
398 0
自注意力机制(Self-Attention)的基本知识
|
机器学习/深度学习
深度学习入门(8)激活函数ReLU和 Sigmoid的计算图表示方式及其误差反向传播的代码实现
深度学习入门(8)激活函数ReLU和 Sigmoid的计算图表示方式及其误差反向传播的代码实现
深度学习入门(8)激活函数ReLU和 Sigmoid的计算图表示方式及其误差反向传播的代码实现