请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

可以把build函数定义weight和bias的代码放到__init__函数中吗?

在之前课程中用Sequencial封装模型的时候,DenseLayer定义好像没有用到build函数,而是把所有参数(包括input_shape)都传到初始化函数中,那请问我是否可以把定义weight和bias的两段代码放到初始化函数内?

正在回答 回答被采纳积分+3

1回答

提问者 weixin_宝慕林8180759 2021-02-11 22:46:14

我自问自答了,其实官网上就有:https://tensorflow.google.cn/api_docs/python/tf/keras/layers/Layer

主要意思是说:__init__() 函数中定义该层中不依赖于input_shape的属性,比如说Dense里面的激活函数就不依赖与input_shape
而build()函数里面这是定义一些依赖于input_shape的属性,比如说weight和bias,build() 函数是由程序自动调用的(在第一次调用这个层的时候)

以下是关于build函数自动调用的简单验证:
layer = keras.layers.Dense(10, input_shape=(5,))
# 这里输出空数组
print(layer.variables)
x = layer(tf.zeros([10,5]))
# 在调用该层次之后,才可以正常打印该层的变量
# 证明build是自动调用的
print(layer.variables)

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信