我遇到了一个自定义虚拟线性回归模型,其代码如下:
class RegressionModel(tf.keras.Model): # every new model has to use Model
'''
A Model that performs Linear Regression
'''
def __init__(self,in_units,out_units):
'''
args:
in_units: number of input neurons
out_units: number of output units
'''
super(RegressionModel,self).__init__() # constructor of Parent class
self.in_units = in_units
self.out_units = out_units
self.w = tf.Variable(tf.initializers.GlorotNormal()((self.in_units,self.out_units)))
# make weight which has initial weights according to glorot_normal distribution
self.b = tf.Variable(tf.zeros(self.out_units)) # bias is mostly zeros
def call(self,input_tensor):
'''
execurte forward pass
args:
input_tensor: input tensor which will be fed to the network
'''
return tf.matmul(input_tensor, self.w) + self.b
我想问weight
为什么具有in,out
的2D形状,而偏斜只有out
,更具体地说为什么weight
是2D形状?
答案 0 :(得分:0)
TLDR;
首先是矩阵乘法,而不是加法。
输入= 10个值 hidden_layer_1 = 7个值
w1 = [| input |,| hidden_layer_1 |]-> [10,7] b1 = | hidden_layer_1 | -> [7]
hidden_layer_1 =激活(输入* w1 + b1)
因此是正确的。
常规 这是一个非常基本的问题,您应该在开始实施之前先学习一下理论。
从一些基本介绍开始,这些介绍也涉及线性代数。 例如。安德鲁·伍格(Andrew Ngs)在Coursera开设的课程。 伊恩·古德洛夫斯(Ian Goodfellows)的书是免费的在线书籍,但从以下内容不包括简单的讲座 https://www.deeplearningbook.org/