# 神经网络
# 神经网络
- 每个神经元里存储着若干权重(weight)、偏置(bias)和一个激活函数(activation)
- 输入乘上权重加上偏置,经过激活函数得到输出
- 激活函数用于添加一些非线性变换
- 神经网络通常包括一个输入层、若干隐藏层、一个输出层
- 输入层通常不用于计算神经网络的层数
# 神经网络的训练
- 给大量输入和输出,算出神经网络里所有神经元的权重、偏置,然后给定新的输入,可以算出新的 输出
- 在机器学习里输入输出被称为特征和标签,大量输入输出被称为训练集
# 如何训练神经网络
- 初始化:随机生成一些权重和偏置
- 计算损失:给定特征,计算出标签,得到它与真实标签差得多远
- 优化:微调权重和偏置,使损失变小
# 前向传播与反向传播
前向传播:将训练数据的特征送入网络,得到标签 反向传播:计算损失并优化
# 如何计算损失
使用损失函数
# 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
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
2
3
4
# 神经网络数据结构设计
- 神经网络的每一层要存储N维数据
- N层的For循环运算
- Tensor(张量)作为高维数据结构完美解决以上问题