Tensorflow使用keras创建神经网络的方法

创建简单神经网络

直接使用keras.Model方法

def line_fit_model():
    """
    Model搭建网络结构
    param:
    return:
    """
    # 输入层
    inputs = tf.keras.Input(shape=(1, ), name="inputs")
    # 隐藏层-1
    layer1 = layers.Dense(10, activation="relu", name="layer1")(inputs)
    # 隐藏层-2
    layer2 = layers.Dense(15, activation="relu", name="layer2")(layer1)
    # 输出层
    outputs = layers.Dense(5, activation="softmax", name="outputs")(layer2)
    # 实例化
    model = tf.keras.Model(inputs=inputs, outputs=outputs)
    # 显示网络结构
    model.summary()
    return model

在这里插入图片描述

继承keras.Model方法

class LiftModel(tf.keras.Model):
    """
    继承keras.Model
    重写调用函数
    """
    def __init__(self):
        super(LiftModel, self).__init__()
        self.layer1 = layers.Dense(10, activation=tf.nn.relu, name="layer1")
        self.layer2 = layers.Dense(15, activation=tf.nn.relu, name="layer2")
        self.outputs = layers.Dense(5, activation=tf.nn.softmax, name="outputs")
    def call(self, inputs):
        layer1 = self.layer1(inputs)
        layer2 = self.layer2(layer1)
        outputs = self.outputs(layer2)
        return outputs
if __name__ =="__main__":
	inputs = tf.constant([[1]])
	lift = LiftModel()
	lift(inputs)
	lift.summary()

在这里插入图片描述

采用keras.Sequential内建方法

def line_fit_sequetnial():
    model = tf.keras.Sequential([
        layers.Dense(10, activation="relu", input_shape=(1, ),  name="layer1"),
        layers.Dense(15, activation="relu", name="layer2"),
        layers.Dense(5, activation="softmax", name="outputs")
    ])
    model.summary()
    return model

在这里插入图片描述

采用Sequential()外建方法

def outline_fit_sequential():
    model = tf.keras.Sequential()
    model.add(layers.Dense(10, activation="relu", input_shape=(1, ), name="layer1"))
    model.add(layers.Dense(15, activation="relu", name="layer2"))
    model.add(layers.Dense(5, activation="softmax", name="output"))
    model.summary()
    return model

在这里插入图片描述

创建卷积神经网络

采用内建Sequentia方法

def cnn_sequential():
    model = tf.keras.Sequential([
        # 卷积层-1
        layers.Conv2D(32, (3, 3), activation="relu", input_shape=(28, 28, 3), name="conv-1"),
        # 池化层-1
        layers.MaxPooling2D((2, 2), name="pool-1"),
        # 卷积层-2
        layers.Conv2D(64, (3, 3),activation="relu" ,name="conv-2"),
        # 池化层-2
        layers.MaxPooling2D((2, 2), name="pool-2"),
        # 卷积层-3
        layers.Conv2D(64, (3, 3), activation="relu", name="conv-3"),
        # 拉平成列向量
        layers.Flatten(),
        # 全连接层-1
        layers.Dense(64, activation="relu", name="full-1"),
        # softmax层
        layers.Dense(64, activation="softmax", name="softmax-1")
    ])
    model.summary()

在这里插入图片描述

采用Sequential外建方法

def outline_cnn_sequential():
    model = tf.keras.Sequential()
    model.add(layers.Conv2D(32, (3, 3), activation="relu", input_shape=(84, 84, 3), name="conv-1" ))
    model.add(layers.MaxPooling2D((2, 2), name="pool-1"))
    model.add(layers.Conv2D(64, (3, 3), activation="relu", name="conv-2"))
    model.add(layers.MaxPooling2D((2, 2), name="pool-2"))
    model.add(layers.Conv2D(64, (3, 3), activation="relu", name="conv-3"))
    model.add(layers.MaxPooling2D((2, 2), name="pool-3"))
    model.add(layers.Flatten())
    model.add(layers.Dense(64, activation="relu", name='full-1'))
    model.add(layers.Dense(64, activation="softmax", name="softmax-1"))
    model.summary()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值