神经网络六步法
1、import
import tensorflow as tf
import numpy as np
from sklearn import datasets
2、_train ,_test
x_train = datasets.load_iris().data
y_train = datasets.load_iris().target
#ps:还需要对数据乱序
3、models.Sequential()
注意:Sequential()搭建的是顺序型神经网络结构
# 描述各层网络结构
model = tf.keras.models.Sequential(['网络结构'])
#网络结构
# 拉直层,把输入特征拉直成为一位数组
tf.keras.layers.Flatten()
# 全连接层,activation="激活函数" 用字符串形式给出,例如 activation="relu"
tf.keras.layers.Dense("神经元个数",activation="激活函数",kernel_constraint="正则化方式")
# 卷积层
tf.keras.layers.Conv2D(filters="卷积核个数",kernel_size="卷积核尺寸",strides="卷积步长", padding="valid or same")
# LSTM层
tf.keras.layers.LSTM()
4、model.compile()配置神经网络的训练方法
model = tf.keras.models.Sequential(['网络结构'])
model.compile(optimizer="优化器",loss="损失函数",metrics=["准确率"])
'''
optimizer可选:
'sgd' 或 tf.keras.optimizers.SGD(lr=学习率,momentum=动量参数)
'adagrad' 或 tf.keras.optimizers.Adadelta(lr=学习率)
'adadelta' 或 tf.keras.optimizers.Adadelta(lr=学习率)
'adam' 或 tf.keras.optimizers.Adam(lr=学习率,beta=0.9,beta_2=0.999)
loss可选:
mse 或 tf.keras.losses.MeanSquaredError()
'sparse_categorical_crossentropy' 或 tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)
metrics可选:
'accuracy' y和y_ 都是数值,如 y = [1] y_ = [1]
'categorical_accuracy' y和y_都是独热码(概率分布),如 y = [0,1,0] y_ = [0.256,0.695,0.048]
'sparse_categorical_accuracy' y是数值,y_是独热码,如 y = [1] y_ = [0.256,0.695,0.048]
'''
5、model.fit()执行训练过程
import tensorflow as tf
model = tf.keras.models.Sequential(['网络结构'])
model.fit(训练集输入特征,训练集标签,batch_size=,epochs=,validation_data=(测试集的输入特征,测试集的标签),
validation_split=从训练集中划分多少比例给测试集,validation_freq=多少次epoch测试一次)
6、model.summary() 打印网络结构和参数统计
model.summary()
六步法重构鸢尾花分类算法(顺序网络结构)
# 六步法实现鸢尾花分类
# 1、 import
import tensorflow as tf
import numpy as np
from sklearn import datasets
# 2、_train ,_test
x_train = datasets.load_iris().data
y_train = datasets.load_iris().target
np.random.seed(116)
np.random.shuffle(x_train)
np.random.seed(116)
np.random.shuffle(y_train)
# 3、models.Sequential()
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(3, activation="softmax", kernel_regularizer=tf.keras.regularizers.l2())
])
# 4、model.compile()
model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
metrics=["sparse_categorical_accuracy"])
# 5、model.fit()
# 指定了测试集为20%
model.fit(x_train,y_train,batch_size=32,epochs=500,validation_split=0.2,validation_freq=20)
# 6、model.summary()
model.summary()