模型搭建6步走
** 此处以红酒数据集为例
导包如下:
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense,Dropout
from tensorflow.keras.optimizers import SGD
from tensorflow.keras.optimizers import Adam
import sklearn.datasets as data
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from matplotlib import pyplot
from keras.utils import to_categorical
1)导入数据,训练及测试数据集划分
# load dataset
wine = data.load_wine()
X = wine.data
y = wine.target
y = to_categorical(y,3)
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2)
2)定义模型:即构建模型层数框架,选择激活函数,神经元个数等
*** 注意二分类与多分类问题使用的激活函数与损失函数是不同的
# add model
model = Sequential()
model.add(Dense(100, activation='relu', input_shape=(13,)))
# model.add(Dropout(0.2))
model.add(Dense(50, activation='relu'))
# model.add(Dropout(0.2))
# model.add(Dense(10, activation='relu'))
model.add(Dense(3,activation='softmax'))
3)编译模型:即选择合适的损失函数和优化算法(如Adma,SGD等)
#compile the model
#opt = SGD (learning_rate =0.05, momentum =0.9)
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
#summarize the model
model.summary()
# plot_model(model, show_shapes=True)
4)训练模型
#fit the model
history = model.fit(X_train, y_train, epochs =200, batch_size=32, verbose=1)
5)评估模型
#Evaluate the model
loss,acc = model.evaluate(X_test, y_test, verbose=1)
print("Test Accuracy:",loss)
6)模型预测
# make a prediction
yhat = model.predict(X_train)
画图:
# plot learning curves
pyplot.title('Learning Curves')
pyplot.xlabel('Epoch')
pyplot.ylabel('Cross Entropy')
pyplot.plot(history.history['loss'], label='train')
# pyplot.plot(history.history['val_loss'], label='val')
pyplot.legend()
pyplot.show()
kears loss function:https://keras.io/api/losses/probabilistic_losses/#categoricalcrossentropy-class
激活函数:https://www.cnblogs.com/nxf-rabbit75/p/9276412.html
tensorflow实现模型可视化(plot_model函数)
报错:TypeError: 'InputLayer' object is not iterable
解决:使用TensorFlow2.0