15.2 深度学习过程详解

神经网络的学习,其实和人类的学习过程基本一致。
模型建立后,需要进行训练,这里有三个集合:
1.训练集。用来训练,相当于人类平时的学习过程
2.测试集。测试一下学习效果,相当于平时测验。测验的题目不可能完全和训练一样,但可能会有相同的题型。根据成绩回去修改学习方法。
3.验证集。前面两步是多次进行的,然后就可以验证一下。这就相当于模拟考。出若干个模拟考试卷来验证学习情况。当然,模拟考内容不能用在前面的训练中。

如果一切都达到理想状态,那么这个模型就建立起来,可以验证真实的输入了。对比现实就是参加真实的高考。我们用代码来看看具体哪部分对应上面的集合。
import tensorflow as tf
import pandas as pd
import numpy as np
''' 神经网络线性回归 '''
train_image = pd.read_csv("D:/test.csv")
train_label = train_image['v'# 从数据里取出答案
models = tf.keras.models
layers = tf.keras.layers
model = models.Sequential()
model.add(layers.Dense(10, activation='relu', input_shape=(3,)))
model.add(layers.Dense(1, activation='linear'))
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=1e-2),
              loss=tf.keras.losses.MeanSquaredError())
model.summary()
#从数据里取出练习,不包括答案
selected_cols = ['x''y''z']
inputs = pd.DataFrame()
inputs = pd.concat([inputs, train_image[selected_cols].copy()], axis=1)
#观察训练和正确结果
print(inputs)
print(train_label)
#训练
model.fit(x=inputs, y=train_label, epochs=1000,batch_size=50,validation_split=0.2)
#验证
real = pd.read_csv("D:/real.csv")
selected_cols = ['x''y''z']
x = pd.DataFrame()
x = pd.concat([x, real[selected_cols].copy()], axis=1)
predict=model.predict(x)
print(x)
print(predict)
代码第5行,就是训练集,从一个表格文件读出。这里是包含了练习和答案的,第6行代码表示取出结果那一列v,用于训练,而输入就是x,y,z三列。取出的代码在第18行。
第27行代码就是设置训练参数:
model.fit(x=inputs, y=train_label, epochs=1000,batch_size=50,validation_split=0.2)
epochs表示训练1000次
batch_size表示每次拿50条数据来训练
其中的validation_split=0.2表示20%的数据用于测试,也就是开始说的测试集,相当于50*0.2=10不用于平时学习,拿来做测验题

而验证集是31行代码,这部分的数据并没有用于前面的训练,拿来做验证,验证的结果最后打印出来,验证的话,我们是知道正确答案的。
而真实的使用,就不知道正确答案了。这段代码这里并没有展示。