程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了通过 Sequential() 和直接实现网络的区别?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决通过 Sequential() 和直接实现网络的区别??

开发过程中遇到通过 Sequential() 和直接实现网络的区别?的问题如何解决?下面主要结合日常开发的经验,给出你关于通过 Sequential() 和直接实现网络的区别?的解决方法建议,希望对你解决通过 Sequential() 和直接实现网络的区别?有所启发或帮助;
@H_880_3@model = tf.keras.Sequential()
model.add(tf.keras.layers.input(shape=(32,32,3)))
model.add(tf.keras.layers.Dense(10))

@H_880_3@model = tf.keras.layers.input(shape=(32,3))
model = tf.keras.layers.Dense(10)(model)

这两种实现有什么区别?我知道这两者都做同样的事情。

我正在尝试使用 TensorFlow 实现 Inception 模型,但在实现 inception_block 函数时遇到了问题。我可以采用第二个版本并按照下面提到的代码进行操作,但我想使用 Sequential()add() 来实现相同的功能。

def inception_block(model,filter_map):
  path1 = tf.keras.layers.Conv2D(filter_map[0],(1,1),padding='same',activation='relu')(model)
  
  path2 = layers.Conv2D(filter_map[1],activation='relu')(model)
  path2 = layers.Conv2D(filter_map[2],activation='relu')(path2)

  return tf.concat([path1,path2],axis=3)
input_ = tf.keras.layers.input(shape=(32,3))
input_tensor = tf.keras.layers.experimental.preprocessing.Resizing(224,224,interpolation="bilinear",input_shape=x_Train.shape[1:])(input_)
x = tf.keras.layers.Conv2D(64,7,StriDes=2,activation='relu')(input_tensor)
x = tf.keras.layers.MaxPooling2D(3,StriDes=2)(X)
x = tf.keras.layers.Conv2D(64,1,StriDes=1,activation='relu')(X)
x = tf.keras.layers.Conv2D(192,3,activation='relu')(X)
x = tf.keras.layers.MaxPooling2D(3,StriDes=2)(X)
x = inception_block(x,[64,64,192])
x = tf.keras.layers.MaxPooling(3,StriDes=2)(X)

解决方法

基于文档 here:

您有 3 种定义模型的方法:

  • Sequential:(您的第一种方法)Sequential 模型非常简单(简单的层列表),但仅限于单输入、单输出的层堆栈顾名思义)。

  • Functional API:(您的第二种方法)Functional API,这是一个易于使用、功能齐全的 API,支持任意模型架构。对于大多数人和大多数用例,这是您应该使用的。

  • 模型子类化:您可以自己从头开始实现所有内容。如果您有复杂的、开箱即用的研究用例,请使用此方法。

因此,由于Inception Model 有分支,不能使用Sequential 模型来实现。您应该使用函数式 API 或从模型创建一个子类并从头开始实现您的模型。

请注意,即使是 Functional API 也有一些限制。它仅适用于层的有向无环图的模型,例如MobileNet、Inception 等(没有循环或循环的模型)。对于更奇特的建筑,例如动态和递归网络或架构可能会随时更改,您必须使用模型子类。

大佬总结

以上是大佬教程为你收集整理的通过 Sequential() 和直接实现网络的区别?全部内容,希望文章能够帮你解决通过 Sequential() 和直接实现网络的区别?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。