一、简介
这一篇博客是AI音频的第一篇,想写一下怎么用keras去解决回归问题。首先,keras是一个在tensorflow上面封装的高级的API包,用起来十分的方便。keras的API文档的地址在这里。然后是对于回归问题的理解,回归问题的话,就是输出的y值是连续的,如果输出是标签化的,比如判断一张照片是猫是狗,那就是分类问题;如果判断一个地区的房子的房价,输出是个连续的东西,那么就是回归问题。
二、代码
代码也是很简洁,之前有看过莫烦python,所以代码应该有很多地方都是相似的。但是我觉得自己看过一遍,消化一遍,再写出来,就能够真正学到东西,转化为自己的东西,而不是只是粘贴复制。
那么就简单说一下代码吧
1、一开始导入一些必要的包,包括keras
, numpy
和 matplotlib
, 依次是神经网络、数据处理和可视化的包
2、由于没有去找真实的数据,所以就造一些数据,里面加上一些noise
3、然后就是简单调用keras封装好的高级API,用数据对模型进行训练,然后再用模型去预测原来的训练集,因为预测的数据,都是训练的时候的数据,所以我们能够看到效果是非常好
# 导入一些必要的包
from keras.models import Sequential
from keras.layers import Activation, Dense
import numpy as np
import matplotlib.pyplot as plt
# 没有真实数据,写一个函数造数据
def create_data():
data_x = np.linspace(-1, 1, 100)[:,np.newaxis]
noise = np.random.normal(0, 0.05, size=data_x.shape)
data_y = data_x ** 2 + noise
return data_x, data_y
if __name__ == "__main__":
x, y = create_data()
# plt.scatter(x, y) # 可以看一下数据长什么样子
# plt.show()
model = Sequential([ # 用keras搭建一个简单的网络模型
Dense(10),
Activation('relu'),
Dense(1)
])
model.compile(loss='mse', optimizer='rmsprop') # 误差使用均方误差, 优化器使用 rmsprop
model.fit(x, y, epochs=300, batch_size=50) # 训练模型
y_pred = model.predict(x) # 预测
plt.scatter(x, y) # 可视化
plt.plot(x, y_pred, c='r')
plt.show()