1.初识tensorflow:房价预测练习

问题描述

想象一下,如果房子的定价很简单,带一间卧室的房子价格是5万+5万,那么一间卧室的房子要花10万元;两间卧室的房子就要花15万元,如此类推。

如何创建一个神经网络,来学习这种关系,让它会预测一个7间卧室的房子,价格接近40万。

提示:如果将房价单位用10万表示(称为scale),网络判断准确性会更好。例如对于x=1,输出1,表示10万;x=2,输出1.5表示15万。神经元网络对大数值处理不是太好,一般训练数据都要经过scalling变小才行。

解决

import tensorflow as tf
import numpy as np
from tensorflow import keras
model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])])
model.compile(optimizer='sgd', loss='mean_squared_error')
xs = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], dtype=float)
ys = np.array([1.0, 1.5, 2.0, 2.5, 3.0, 3.5], dtype=float)
model.fit(xs, ys, epochs=1000)
print(model.predict([7.0]))

输出结果为:

Epoch 1/10
1/1 [==============================] - 0s 2ms/step - loss: 15.5253
Epoch 2/10
1/1 [==============================] - 0s 1ms/step - loss: 7.1934
Epoch 3/10
1/1 [==============================] - 0s 1ms/step - loss: 3.3370
Epoch 4/10
1/1 [==============================] - 0s 1ms/step - loss: 1.5521
Epoch 5/10
1/1 [==============================] - 0s 1ms/step - loss: 0.7260
Epoch 6/10
1/1 [==============================] - 0s 1ms/step - loss: 0.3435
Epoch 7/10
1/1 [==============================] - 0s 1ms/step - loss: 0.1665
Epoch 8/10
1/1 [==============================] - 0s 1ms/step - loss: 0.0845
Epoch 9/10
1/1 [==============================] - 0s 1ms/step - loss: 0.0465
Epoch 10/10
1/1 [==============================] - 0s 1ms/step - loss: 0.0288
[[4.0215793]]