Press "Enter" to skip to content

## 简单预测器

`\$=w￥`

w 误差 w增加值
5 2.15 null
10 -2.85 5
6 1.15 -4
7 0.15 1
7.1 0.05 0.1
7.2 -0.05 0.1
7.15 0 -0.05

A 2.61 4.46
S 4.47 2.46 绿

```1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0
1 ^ 1 = 0```

## 神经网络(多层感知机)

### 反向传播算法

`1^0=1` ，目标的数据应该是1，在简单预测器里我们使用的简单的差来评估误差，这里我们来使用差的平方 `1/2(目标值-计算值)^2` (1/2是为了后面计算方便），这个评估误差的函数也叫损失函数或者代价函数(loss function)，训练调整w的目标是使用误差最小，也就是误差函数的值趋于0，从前面的计算可以看出，所有的 w 都和误差相关，那我们应该怎幺找到使误差最小的每一个 w 的值呢？

```const tf = require('@tensorflow/tfjs-node')
const model = tf.sequential()
model.add(tf.layers.dense({ inputShape: [2], units: 2, activation: 'sigmoid' }))
model.add(tf.layers.dense({ units: 1, activation: "sigmoid" }))
model.compile({ optimizer: tf.train.sgd(0.5), loss: 'meanSquaredError' });
const data = tf.tensor([[0, 0], [0, 1],[1, 1], [1, 0]])
const target = tf.tensor([0, 1, 0, 1], [4, 1]);
(async function () {
await model.fit(data, target, {
batchSize: 3,
epochs: 3000,
callbacks: tf.node.tensorBoard('./fit_logs_1')
})
const predict1 = await model.predict(tf.tensor([0, 0], [1, 2])).data()
console.log(`0, 0 : \${predict1}`)
const predict2 = await model.predict(tf.tensor([1, 0], [1, 2])).data()
console.log(`1, 0 : \${predict2}`)
})()
/*

0, 0 : 0.04225059226155281
1, 0 : 0.9512262940406799
*/```

## 卷积神经网络

```const tf = require('@tensorflow/tfjs');
const model = tf.sequential();
model.add(tf.layers.conv2d({
inputShape: [28, 28, 1],
filters: 32,
kernelSize: 3,
activation: 'relu',
}));
model.add(tf.layers.conv2d({
filters: 32,
kernelSize: 3,
activation: 'relu',
}));
model.add(tf.layers.maxPooling2d({poolSize: [2, 2]}));
model.add(tf.layers.conv2d({
filters: 64,
kernelSize: 3,
activation: 'relu',
}));
model.add(tf.layers.conv2d({
filters: 64,
kernelSize: 3,
activation: 'relu',
}));
model.add(tf.layers.maxPooling2d({poolSize: [2, 2]}));
model.add(tf.layers.flatten());
model.add(tf.layers.dropout({rate: 0.25}));
model.add(tf.layers.dense({units: 512, activation: 'relu'}));
model.add(tf.layers.dropout({rate: 0.5}));
model.add(tf.layers.dense({units: 10, activation: 'softmax'}));
model.compile({
optimizer: 'rmsprop',
loss: 'categoricalCrossentropy',
metrics: ['accuracy'],
});
module.exports = model;```

## 总结

max pooling -> convolution -> max pooling -> flatten -> Full connected feedforward network 卷积的原理：有些特征远比整张图要小；同样的特征可能出现在不同的区域。池化：取样不会改变这个对象。 循环神经网络 为什幺深度？更多层，更多参数，更小的错误率。为什幺不是单层更多神经元，而是多层有限神经元？fat + short VS thin + tall ? 降低过耦合： https://www.youtube.com/watch?v=NyG-7nRpsW8 优化梯度下降： https://www.youtube.com/watch?v=g25U4HSZKmQ 几本书： http://www.deeplearningbook.org http://neuralnetworksanddeeplearning.com/ https://nndl.github.io/ 名词表： https://developers.google.com/machine-learning/glossary –> 文章地址：深度神经网络入门

Github上也有一些东西： [Github]