【2019.09.14】基于TensorFlow2.0,使用Keras实现线性回归模型

介绍
在这里插入图片描述
介绍损失函数loss
* 二分类问题: 最后一层激活函数是 sogmoid,损失函数是binart_crossentropy
* 多分类问题:最后一层激活函数是 softmax,损失函数是categorical_crossentropy
* 多标签问题:最后一层激活函数是 softmoid,损失函数是binary_crossentropy
* 回归问题 :最后一层没有激活函数,损失函数是 mse (均方差)

优化器 optimizer
大多数情况下,使用 adam 和 rmsprop 及其默认的学习率是稳妥的
除了通过名称来调用优化器 model.compile(‘名称’),我们还可以通过实例化对象来调用优化器 model.compile(‘优化器’)。选取几个对比如下:
名称:SGD
对象:SGD(lr=0.01, momentum=0.0, decay=0.0, nesterov=False)
名称:RMSprop
对象:RMSprop(lr=0.001, rho=0.9, epsilon=None, decay=0.0)
名称:Adagrad
对象:Adagrad(lr=0.01, epsilon=None, decay=0.0)
名称:Adam
对象:Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=False)
这些优化器对象都在 keras.optimizer 命名空间下。使用优化器对象来编译模型的好处是可以调节里面的超参数比如学习率 lr,使用名称则来编译模型只能采用优化器的默认参数,比如用 Adam 里面的学习率 0.001。指标 metrics
指标不会用于训练过程,只是让我们监控模型训练时的表现
除了 Keras 自带指标,我们还可以自定指标,下列的 mean_pred 就是自定义指标(该指标计算预测的平均值)。
def mean_pred(y_true, y_pred):
return K.mean(y_pred)
model.compile(optimizer=‘sgd’,
loss=‘binary_crossentropy’,
metrics=[‘acc’, mean_pred])
* 损失函数(lossfunction):网络如何衡量在训练数据上的性能,即网络如何朝着正确的方向前进。
* 优化器(optimizer):基于训练数据和损失函数来更新网络的机制。
* metric 在训练和测试过程中需要监控的指标(metric)即正确分类的图像所占的比例。

from tensorflow import keras
from tensorflow.keras.layers import Dense
from tensorflow.keras import Sequential
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = np.linspace(0, 100, 30) # 从0-100 ,生成30个
y = 3*x + 7 + np.random.randn(30)*7
x,y
(array([  0.        ,   3.44827586,   6.89655172,  10.34482759,
         13.79310345,  17.24137931,  20.68965517,  24.13793103,
         27.5862069 ,  31.03448276,  34.48275862,  37.93103448,
         41.37931034,  44.82758621,  48.27586207,  51.72413793,
         55.17241379,  58.62068966,  62.06896552,  65.51724138,
         68.96551724,  72.4137931 ,  75.86206897,  79.31034483,
         82.75862069,  86.20689655,  89.65517241,  93.10344828,
         96.55172414, 100.        ]),
 array([  6.4501171 ,  15.13629889,  28.04108584,  37.90888378,
         34.96072549,  58.428139  ,  76.08627325,  82.62402931,
         83.89925905,  90.98284884, 116.34701778, 119.03372399,
        133.8182022 , 129.11239461, 157.30180369, 155.38311174,
        164.0947757 , 187.0479012 , 192.95187403, 197.56899023,
        216.69289535, 227.94493776, 233.29961233, 243.66996931,
        254.87157058, 267.75226675, 277.34454947, 298.05600742,
        296.75374317, 302.28190864]))
plt.scatter(x, y)
<matplotlib.collections.PathCollection at 0x257c8da4ac8>

在这里插入图片描述

model = Sequential([
    Dense(1, input_shape=(1,))  # 输入一维,输出一维
])
model.summary() # ax + b
Model: "sequential_5"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_5 (Dense)              (None, 1)                 2         
=================================================================
Total params: 2
Trainable params: 2
Non-trainable params: 0
_________________________________________________________________
model.compile(optimizer='adam',
             loss='mse',
             metrics=['acc'])
history = model.fit(x, y, epochs=5000)
Epoch 1/5000
30/30 [==============================] - 0s 100us/sample - loss: 1478.5520 - acc: 0.0000e+00
Epoch 2/5000
30/30 [==============================] - 0s 100us/sample - loss: 1475.6066 - acc: 0.0000e+00
Epoch 3/5000
30/30 [==============================] - 0s 100us/sample - loss: 1472.6656 - acc: 0.0000e+00
Epoch 4/5000
30/30 [==============================] - 0s 134us/sample - loss: 1469.7291 - acc: 0.0000e+00
plt.scatter(x, y)
plt.plot(x, model.predict(x))

在这里插入图片描述

model = Sequential([
    Dense(1, input_shape=(1,))  # 输入一维,输出一维
])
	array([[309.2236]], dtype=float32)
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值