tf2.0搭建网络八股文

 

目录

六步

model = tf.keras.models.Sequential([网络结构]) #描述各层网络

model.compile(optimizer=优化器,loss=损失函数,metrics=["准确率"])

model.fit

model.summary()

class MyModel(Model) model = MyModel


六步

  • import
  • train, test
  • model = tf.keras.models.Sequential:描述网络内部的结构,相当于走了一遍前向传播
  • model.compile 配置训练方法,告知训练时选择哪种优化器,选择哪个损失函数,选择哪种评测指标
  • model.fit 在fit中执行训练过程,告知训练集和测试集的输入特征和标签,告知每个batch是多少,告知要迭代多少次数据集
  • model.summary()打印出网络的结构和参数统计

model = tf.keras.models.Sequential([网络结构]) #描述各层网络

网络结构举例

拉直层: tf.keras.layers.Flatten()

全连接层: tf.keras.layers.Dense(神经元个数,activation="激活函数" kernel_regularizer=哪种正则化)

activation(字符串给出) 可选:relu, softmax,sigmoid, tanh

kernel_regularizer可选: tf.keras.regularizers.l1()  tf.keras.regularizers.l2() 

卷积层: tf.keras.layers.Conv2D(filter=卷积核个数, kernel_size=卷积&尺寸,stride =卷积步长, padding="valid" or "same")

LSTM层: tf.keras.layers.LSTM()

model.compile(optimizer=优化器,loss=损失函数,metrics=["准确率"])

Optimizer可选∶

sgd or t.keras.optimizers.SGD(r=学习率,momentum=动量参数)

'adagrad or tf. keras.optimizers.Adagrad (Ir=学习率

)'adadelta'or tf.keras.optimizers.Adadelta(r=学习率)

'adam'or tf.keras.optimizers.Adam(lr=学习率, beta_1=0.9, beta 2=0.999)

loss可选∶

'mse'or tf.keras.losses.MeanSquaredError()

sparse_categorical_crossentropy or tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False)

如果输出不满足概率分布的话,这里要写true

Metrics可选∶

accuracy∶y_和y都是数值.y_=[1] y=[1]

'categorical_accuracy'∶y_和y都是独热码(概率分布),如y_=[0.1.0]  y=[0.256.0.695.0048]

'sparse_ categorical_accuracy∶y_是数值, y是独热码(概率分布),如y_=[1], y=[0.256,0.6950048](y_是真实值,y是预测的结果值)

model.fit

model.fit(训练集的输入特征,训练集的标签,

            batch_size=, epochs=,

            validation_data=(测试集的输入特征,测试集的标签),

             validation_split=从训练集划分多少比例给测试集,

             validation_freq=多少次epoch测试一次)

model.summary()

class MyModel(Model) model = MyModel

用 Sequential可以搭建出上层输出就是下层输入的顺序网络结构,但是无法写出一些带有跳连的非顺序网络结构。可以选择用类class搭建神经网络结构。

class MyModel(Model):
	#对 __init__() 方法的调用发生在实例被创建之后
	def __init__:
		super(MyModel, self).__init__()
		#定义网络结构块

	def call(self, x):
		#调用网络结构块,实现前向传播
		return y
model = MyModel()

init函数准备出搭建网络所需的各种积木,call函数调用__init__中搭建好的积木,实现前向传播

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值