目录
一、数据加载(keras.datasets)
1.1 MNIST 加载
1.2 CIFAR10/100 加载
1.3 tf.data.Dataset.from_tensor_slices
1.4 .shuffle (对应打散数据)
1.5 .map(数据预处理)
1.6 .batch / .repeat
二、全连接层
三、输出方式
3.1 y ∈ R
3.2 y ∈ [0. 1]
3.3 y ∈ [0, 1],Σ y = 1
3.4 y ∈ [-1, 1]
四、误差计算
4.1 MSE
4.2 交叉熵(用于分类)
4.2.1 二分类
4.2.3 多分类
一、数据加载(keras.datasets)

数据集列表:
(1)boston housing:波士顿房价
(2)mnist:手写数字集
(3)cifar:另一个小型的图片识别的
(4)imdb:用户评语(100字以内),好评差评

1.1 MNIST 加载
(x,y),(x_test,y_test)
x,y 为训练集:[60k, 28, 28],[60k, ]
x_test,y_test 为测试集:[10k, 28, 28],[10k, ]
因为都是灰度图,所以颜色通道是 1

导入的格式是个 numpy 的api,所以可以直接 x.min(),不然 tensor 中是 tf.reduce_min

1.2 CIFAR10/100 加载
CIFAR10 就是 10 类,CIFAR100 就是把每一个大类都细分,最后成 100 个小类
因为 cifar 大小非常小,所以图片会模糊,真实大小是 [32, 32, 3]

(x,y),(x_test,y_test)
x,y 为训练集:[50k, 32, 32],[50k, 1]
x_test,y_test 为测试集:[10k, 32, 32],[10k, 1]

1.3 tf.data.Dataset.from_tensor_slices
因为加载的都是 numpy 格式的,都是要转化为 tensor 的,所以就有了一个函数直接使用就是:tf.data.Dataset.from_tensor_slices
但是要先取它的迭代器,再取它,就是 next(iter(db))

1.4 .shuffle (对应打散数据)
防止数据集排列的规律一致,如y(label)都是0-9这样排列,所以就把数据 x对应y来打散

1.5 .map(数据预处理)

1.6 .batch / .repeat

用 while 的话会触发一个异常



代码:新的 TF06 forward.py
二、全连接层











代码: mlp.py



三、输出方式

3.1 y ∈ R

3.2 y ∈ [0. 1]




3.3 y ∈ [0, 1],Σ y = 1
sigmoid 不能保证所有概率之和为1
softmax 可以



3.4 y ∈ [-1, 1]


四、误差计算

4.1 MSE


4.2 交叉熵(用于分类)
熵(Entropy)的概念


交叉熵(Cross Entropy):

4.2.1 二分类
二分类有两种格式,但是现在来说这两种并没有什么影响

qi 为在 i 结点输出的 概率


4.2.3 多分类



categorical_crossentropy 小写形式是一个函数,大写形式是一个类,调用方式不一样
binary_crossentropy 和 BinaryCrossentropy 也是
BinaryCrossentropy()([1], [0.1]) 前一个括号是建立这个类,可以命名为 criteon

具体使用需要我们自己总结经验


最好设置 from_logits=True 不然会出现数值不稳定的情况,tensorflow 默认是 False




















