tf.keras搭建网络八股
1. import
import tensorflow as tf
from sklearn import datasets
import numpy as np
2. train,test
x_train = datasets.load_iris().data
y_train = datasets.load_iris().target
3. tf.keras.models.Sequential(逐层描述网络结构,走一边前向传播)
Sequential 函数是一个容器,描述了神经网络的网络结构,在 Sequential函数的输入参数中描述从输入层到输出层的网络结构。
如:
拉直层:tf.keras.layers.Flatten()
拉直层可以变换张量的尺寸,把输入特征拉直为一维数组,是不含计算参数的层。
全连接层:tf.keras.layers.Dense( 神经元个数,
activation=”激活函数”,
kernel_regularizer=”正则化方式”)
其中:
activation(字符串给出)可选
relu、softmax、sigmoid、tanh 等
kernel_regularizer 可选
tf.keras.regularizers.l1() L1正则化、
tf.keras.regularizers.l2() L2正则化
卷积层:tf.keras.layers.Conv2D( filter = 卷积核个数,kernel_size = 卷积核尺寸,strides = 卷积步长,padding = “valid” or “same”)
循环层:LSTM 层:tf.keras.layers.LSTM()
举例:
model = tf.keras.models.Sequential(
[tf.keras.layers.Dense(3, activation="relu",
kernel_regularizer=tf.keras.regularizers.l2())])
采用全连接层,3表示输入神经元个数,激活函数用relu,第三个参数用l2正则化。(易错点,选择激活函数可以用字符串或tf.nn.relu; 还有l2正则化后记得加括号,否则报错)
4. compile(训练方法的配置,优化器、损失函数、评测指标)
Model.compile( optimizer = 优化器, loss = 损失函数, metrics = [“准确率”])
- 优化器:
‘sgd’or tf.optimizers.SGD( lr=学习率,decay=学习率衰减率,
momentum=动量参数)
‘adagrad’or tf.keras.optimizers.Adagrad(lr=学习率,
decay=学习率衰减率)
‘adadelta’or tf.keras.optimizers.Adadelta(lr=学习率,
decay=学习率衰减率)
‘adam’or tf.keras.optimizers.Adam (lr=学习率,
decay=学习率衰减率)
- 损失函数:
‘mse’or tf.keras.losses.MeanSquaredError()
‘sparse_categorical_crossentropy
or 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]。
通常用第三种。
model.compile(optimizer=tf.keras.optimizers.Adam(),
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['sparse_categorical_accuracy'])
(优化器加括号,否则报错,此外括号内可设置学习率等参数,)
5. fit(输入特征和标签,batch,迭代次数)
model.fit(训练集的输入特征, 训练集的标签, batch_size, epochs,
validation_data = (测试集的输入特征,测试集的标签),
validataion_split = 从测试集划分多少比例给训练集,
validation_freq = 测试的 epoch 间隔次数)
model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)
6. summary(打印)
7. 总得
import tensorflow as tf
from sklearn import datasets
import numpy as np
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)
tf.random.set_seed(116)
model = tf.keras.models.Sequential(
[tf.keras.layers.Dense(3, activation=tf.nn.relu,
kernel_regularizer=tf.keras.regularizers.l2())])
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.1),
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['sparse_categorical_accuracy'])
model.fit(x_train, y_train, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)
model.summary()