采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
在之前课程中用Sequencial封装模型的时候,DenseLayer定义好像没有用到build函数,而是把所有参数(包括input_shape)都传到初始化函数中,那请问我是否可以把定义weight和bias的两段代码放到初始化函数内?
我自问自答了,其实官网上就有: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)
登录后可查看更多问答,登录/注册
Tensorflow2.0实战—以实战促理论的方式学习深度学习
2.6k 1
1.2k 3
999 19
1.2k 13
1.8k 7