TensorFlow笔记-06-神经网络优化-损失函数,自定义损失函数,交叉熵
- 神经元模型:用数学公式比表示为:f(Σi xi*wi + b), f为激活函数
- 神经网络 是以神经元为基本单位构成的
- 激活函数:引入非线性激活因素,提高模型的表达能力
常用的激活函数有relu、sigmoid、tanh等 - (1)激活函数relu:在Tensorflow中,用tf.nn.relu()表示
- (2)激活函数sigmoid:在Tensorflow中,用tf.nn.sigmoid()表示
- (3)激活函数tanh:在Tensorflow中,用tf.nn.tanh()表示
- 神经网络的复杂度:可用神经网络的的层数和神经网络中待优化参数个数表示
- 神经网络的层数:一般不计入输入层,层数 = n个隐藏层 + 1个输入层
- 神经网络待优化的参数:神经网络中所有参数w的个数 + 所有参数b的个数
- 例如:
在该神经网络中,包含1个输入层,1个隐藏层和1个输出层,该神经网络的参数为2层
在该神经网络中,参数的个数是所有参数w的个数加上所有参数b的总数,第一层参数用三行四列的二阶张量表示(即12个线上的权重w)再加上4个偏置b;第二层参数是四行二列的二阶张量(即8个线上的权重w)再加上2个偏置b
总参数 = 34+4 + 42+2 = 26
损失函数
- 损失函数(loss):用来表示预测(y)与已知答案(y_)的差距。在训练神经网络时,通过不断改变神经网络中所有参数,使损失函数不断减小,从而训练出更高准确率的神经网络模型
- 常用的损失函数有均方误差,自定义和交叉熵等
- 均方误差mse:n个样本的预测值(y)与(y_)的差距。在训练神经网络时,通过不断的改变神经网络中的所有参数,使损失函数不断减小,从而训练出更高准确率的神经网络模型
- 在Tensorflow中用loss_mse = tf.reduce_mean(tf.square(y_-y))
- 例如:
- 预测酸奶日销量y,x1和x2是两个影响日销量的因素
- 应提前采集的数据有:一段时间内,每日的x1因素、x2因素和销量y_。且数据尽量多
- 在本例子中用销量预测产量,最优的产量应该等于销量,由于目前没有数据集,所以拟造了一套数据集。利用Tensorflow中函数随机生成x1、x2,制造标准答案y_ = x1 + x2,为了真实,求和后还加了正负0.05的随机噪声
- 我们把这套自制的数据集喂入神经网络,构建一个一层的神经网络,拟合预测酸奶日销量的函数
- 代码tf07sale文件:https://xpwi.github.io/py/TensorFlow/tf07sale.py