10.2 第一步:设计函数集合(模型)
因为输入是两个量面积和房间个数, 所以我们定义的一个简单的二元线性模型 为:
y
=
w
1
x
1
+
w
2
x
2
+
b
=
w
1
x
1
+
w
2
x
2
+
w
0
x
0
=
X
1
×
3
W
3
×
1
y = w_1x_1 + w_2x_2 +b = w_1x_1 + w_2x_2 +w_0x_0 = X_{1\times 3}W_{3\times 1}
y=w1x1+w2x2+b=w1x1+w2x2+w0x0=X1×3W3×1
其中,
y
y
y 表示输出,房价;
x
1
x_1
x1表示输入的第一个分量,房屋面积;
x
2
x_2
x2表示输入的第二个分量,卧室个数。
w
1
,
w
2
,
b
w_1, w_2, b
w1,w2,b是我们要确定的各个系数。当
w
1
,
w
2
,
b
w_1, w_2, b
w1,w2,b 的取值确定下来后,输入与输出(Features 和 Target/Labels)的关系也就确定下来了。注意,这里为了统一用一个字母来表示系数,
b
b
b 我们用
w
0
w_0
w0来改写一下。
为了后面,使用矩阵相乘,所以上面对于输入数据,我们增加了一个列输入 x 0 x_0 x0,其取值全为 1 1 1和 w 0 w_0 w0来相乘。如代码 \ref{lst:data:input} 中的第 6,7 行。同时,对原有输入数据做了归一化处理,如下面代码 \ref{lst:data:input} 中第 1,2,和 4 行。此处,归一化的目的是为了使得输入数据的所有维度的数量级可以保持一致性。
%tensorflow_version 1.x
import tensorflow as tf
X = tf.placeholder(tf.float32, input_features.shape)
y = tf.placeholder(tf.float32, output_labels.shape)
W = tf.get_variable("weights", (input_features.shape[1],1),
initializer=tf.constant_initializer())
y_hat = tf.matmul(X, W)