tensorflow中利用激活函数linear建立模型与线性回归模型进行对比
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
X_train=np.array([[1.0],[2.0]],dtype=np.float32)
Y_train=np.array([[300.0],[500.0]],dtype=np.float32)
# 定义一个只有一个神经元的层
linear_layer=tf.keras.layers.Dense(units=1,activation='linear')
# 触发权重和偏置的初始化,权重随机初始化为小数字,偏差默认初始化为0
linear_layer(X_train[0].reshape(1,1))
w,b=linear_layer.get_weights()
# 手动设置权重和偏置的值
set_w=np.array([[200]])
set_b=np.array([100])
linear_layer.set_weights([set_w,set_b])
alin=np.dot(set_w,X_train[0].reshape(1,1))+set_b
prediction_tf=linear_layer(X_train)
prediction_np=np.dot(X_train,set_w)+set_b
fig,(ax1,ax2)=plt.subplots(1,2,figsize=(16,4))
# 第一个图
ax1.scatter(X_train,Y_train,marker='x',c='r',label='Data points')
ax1.plot(X_train,prediction_tf,label='model output')
ax1.text(1.6,350,r"y=$200 x + 100$", fontsize=14)
ax1.legend()
ax1.set_title("Tensorflow prediction")
ax1.set_ylabel('Price (in 1000s of dollars)', fontsize=14)
ax1.set_xlabel('Size (1000 sqft)', fontsize=14)
# 第二个图
ax2.scatter(X_train,Y_train,marker='x',c='r',label='Data points')
ax2.plot(X_train,prediction_np,label='model output')
ax2.text(1.6,350,r"y=$200 x + 100$", fontsize=14)
ax2.legend()
ax2.set_title("Numpy prediction")
ax2.set_ylabel('Price (in 1000s of dollars)', fontsize=14)
ax2.set_xlabel('Size (1000 sqft)', fontsize=14)
plt.show()