15.2 深度学习过程详解
神经网络的学习,其实和人类的学习过程基本一致。
模型建立后,需要进行训练,这里有三个集合:
1.训练集。用来训练,相当于人类平时的学习过程
2.测试集。测试一下学习效果,相当于平时测验。测验的题目不可能完全和训练一样,但可能会有相同的题型。根据成绩回去修改学习方法。
3.验证集。前面两步是多次进行的,然后就可以验证一下。这就相当于模拟考。出若干个模拟考试卷来验证学习情况。当然,模拟考内容不能用在前面的训练中。
如果一切都达到理想状态,那么这个模型就建立起来,可以验证真实的输入了。对比现实就是参加真实的高考。我们用代码来看看具体哪部分对应上面的集合。
import tensorflow as tfimport pandas as pdimport numpy as np'''
神经网络线性回归
'''train_image = pd.read_csv("D:/test.csv")train_label = train_image['v'] # 从数据里取出答案models = tf.keras.modelslayers = tf.keras.layersmodel = 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行代码,这部分的数据并没有用于前面的训练,拿来做验证,验证的结果最后打印出来,验证的话,我们是知道正确答案的。
而真实的使用,就不知道正确答案了。这段代码这里并没有展示。