鸢尾花数据集通过from sklearn.datasets import load_iris 方式获取,并将获取的数据划分为训练集、验证集、测试集
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris = load_iris()
x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target,test_size=0.2,random_state=23)
X_train,X_valid,y_train,y_valid=train_test_split(x_train,y_train,test_size=0.2,random_state=12)
打印显示
print(X_valid.shape)
print(X_train.shape)
构建一个10层网络,隐藏层每层对应16个神经元,激活函数都是relu函数,输入输出神经元判断
import tensorflow as tf
from tensorflow import keras
model = keras.models.Sequential([
keras.layers.Flatten(input_shape=[4]),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dropout(rate=0.2),
keras.layers.Dense(3, activation="softmax")
])
model.summary()
model.layers[1]
weights_l,bias_l=model.layers[1].get_weights()
print(weights_l.shape)
print(bias_l.shape)
编译训练网络50次
model.compile(loss="sparse_categorical_crossentropy",
optimizer="sgd",metrics=["accuracy"])
h=model.fit(X_train,y_train,batch_size=10,epochs=50,validation_data=(X_valid,y_valid))
使用pd.DataFrame()
函数,将这个对象转换为一个pandas DataFrame,这样就可以更方便地查看和分析训练过程中的指标变化。
pd.DataFrame(h.history)
绘制画图,model.evaluate()函数是用来评估一个训练好的模型在测试数据集上的性能。
pd.DataFrame(h.history).plot(figsize=(8,5))
plt.grid(True)
plt.gca().set_ylim(0,1)
plt.show()
model.evaluate(x_test,y_test,batch_size=1)