models = tf.keras.models.Sequential([网络结构]) # 描述各层网络
网络结构:
拉直层:tf.keras.layers.Flatten()
本身不含计算,仅能改变形状,将数据变为一位数组(拉直)。
全连接层:tf.keras.layers.Dense(神经元个数,activation="激活函数",kernel_regularizer=正则化方式)
activation(字符串给出)可选:relu、softmax、sigmoid、tanh
kernel_regularizer可选:tf.keras.regularizer.l1()、tf.keras.regularizer.l2()
''' 课程内方法'''
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())
])
'''之前学到的方法'''
model = tf.keras.Sequential(name="MnistSequential")
model.add(layers.Dense(128, activation="relu", input_shape=(784,), name="inputs_layer"))
model.add(layers.Dense(64, activation="relu", name="mid_layer"))
model.add(layers.Dense(10, activation="softmax", name="outputs_layer")) # 搭建完三层的神经网络
p8_iris_sequential.py
class MyModel(Model): #继承了Tensorflow中的Model类
def __init__(self):
super(MyModel, self).__init__()
定义网络结构块
def call(self, x):
调用网络结构块,实现前向传播
return y
model = MyModel()
使用class类封装一个神经网络结构。
import tensorflow as tf
from tensorflow.keras.layers import Dense
from tensorflow.keras import Model
class IrisModel(Model):
def __init__(self):
super(IrisModel, self).__init__()
self.d1 = Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())
def call(self, x):
y = self.d1(x)
return y
model = IrisModel()
p11_iris_class.py
model.compile(optimizer=优化器,loss=损失函数,metrics=["准确率"])
建议初学时先使用字符串,之后再通过tensorflow官网查看函数,来调节超参数。
from_logits参数是在询问是否是原始输入(还是经过softmax变成概率分布的输出),若经过概率分布是False,否则是True。
在callback中想要保存最佳模型,好像只能在评判标准初选择’acc’,然后callback的monitor选择’val_acc’?
进行归一化:把输入特征的数值变小更适合神经网络吸收。
p13_mnist_datasets.py
p14_mnist_sequential.py
p15_mnist_class.py’
似乎不需要声明输入维数??
p16_fashion_class.py
p16_fashion_sequential.py