用c动态数组(实现权重矩阵可视化)实现手撸神经网络230902

变量即内存、指针使用的架构原理:

1、用结构struct记录 网络架构,如 float*** ws 为权重矩阵的指针(指针地址);

2、用 = (float*)malloc (Num * sizeof(float)) 给 具体变量分配内存;

3、用 = (float**)malloc( Num* sizeof(float*) ) 给 指向 具体变量(一维数组)的指针…… 给分配 存放指针的变量……

……见代码

// test22动态数组22多维数组23三维随机数230101.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。

#include 
using namespace std;

typedef struct {
    float*** ws;
    int num1;
    float** layer_outputs;

}NeuralN;

//初始化 神经网络的 weights权重矩阵等
NeuralN init(int* t01, int num02) {
    NeuralN nn;
    nn.num1 = num02;

    nn.ws = (float***)malloc((num02 - 1) * sizeof(float**) );

    srand(time(NULL));

    cout << " [num02:" << num02 << endl;

    for (int i = 0; i <(num02 - 1); ++i) {
        nn.ws[i] = (float**)malloc( t01[i] * sizeof(float*) );  //为指针分配内存
        for (int j = 0; j < t

你可能感兴趣的:(c语言,矩阵,开发语言)