# 神经网络

# 神经网络

  • 每个神经元里存储着若干权重(weight)、偏置(bias)和一个激活函数(activation)
  • 输入乘上权重加上偏置,经过激活函数得到输出
  • 激活函数用于添加一些非线性变换
  • 神经网络通常包括一个输入层、若干隐藏层、一个输出层
  • 输入层通常不用于计算神经网络的层数

# 神经网络的训练

  • 给大量输入和输出,算出神经网络里所有神经元的权重、偏置,然后给定新的输入,可以算出新的 输出
  • 在机器学习里输入输出被称为特征和标签,大量输入输出被称为训练集

# 如何训练神经网络

  1. 初始化:随机生成一些权重和偏置
  2. 计算损失:给定特征,计算出标签,得到它与真实标签差得多远
  3. 优化:微调权重和偏置,使损失变小

# 前向传播与反向传播

前向传播:将训练数据的特征送入网络,得到标签 反向传播:计算损失并优化

# 如何计算损失

使用损失函数

# Tensorflow.js

  • 一个使用 Javascript 实现的机器学习库
  • 可以直接在浏览器和 node.js 中使用机器学习技术

# Tensorflow.js 具体功能

  • 运行现有模型
  • 重新训练现有模型
  • 使用 javascript 开发机器学习模型

# 安装

浏览器使用

yarn add @tensorflow/tfjs
1
import * as tf from "@tensorflow/tfjs";

const a = tf.tensor([1, 2]);
a.print();
1
2
3
4

node 端使用

可以直接像浏览器一样安装使用,但是性能会较慢

绑定 c++加速,但是安装会麻烦一些

全局安装一些前置

yarn add node-gyp windows-build-tools@4.0.0
1

安装完之后在本地安装(要安装1.2.3版本,否则会报错)

yarn add @tensorflow/tfjs-node@1.2.3
1

使用 c++高速版本

import * as tf from "@tensorflow/tfjs-node";

const a = tf.tensor([1, 2]);
a.print();
1
2
3
4

# 神经网络数据结构设计

  • 神经网络的每一层要存储N维数据
  • N层的For循环运算
  • Tensor(张量)作为高维数据结构完美解决以上问题