1、环境搭建
后续介绍的相关代码都是在pycharm运行,pycharm安装略。
打开pycharm,创建一个新的项目用于tensorflow编码练习,在Terminal输入命令:
依赖最新版本的pip
pip install --upgrade pip
安装tensorflow
pip install tensorflow
其他依赖项,可以在后续编码用到时根据系统提示信息再安装。
2、传统编程和机器学习的区别
用一个简单的例子介绍,比如我们写一个计算西瓜价格的程序,计算公式是:
费用=单价*重量+包装费
给出西瓜单价是1.2元/斤,包装费(可降解塑料袋)固定为0.5元
则计算公式为 费用=1.2元/斤*重量+0.5元
2.1 Python程序实现价格计算
先用Python程序实现,直接将费用计算公式写在程序里:
python
def watermelon_total_cost(weight):
# 费用计算公式
total_cost = 1.2 * weight + 0.5
return total_cost
watermelon_weight = float(input('请输入西瓜的重量:'))
cost = watermelon_total_cost(watermelon_weight)
print('费用是:%.2f' % cost)
如果输入10斤时,则程序输出费用:
2.2 机器学习实现价格预测
如果没有在程序里写死费用的计算公式,计算机如何通过训练得到这一规则?
先给出一些重量和对应费用的数据,让机器通过训练这些数据找到规则:
weight=[1, 3, 4, 5, 6, 8]
total_cost=[1.7, 4.1, 5.3, 6.5, 7.7, 10.1]
先上代码,不用急着去了解每行代码的含义,后面章节会详细解释。
python
import numpy as np
import tensorflow as tf
# 西瓜的重量
weight = np.array([1, 3, 4, 5, 6, 8], dtype=float)
# 对应的费用
total_cost = np.array([1.7, 4.1, 5.3, 6.5, 7.7, 10.1], dtype=float)
model = tf.keras.Sequential([
tf.keras.layers.Dense(1, input_shape=[1])
])
model.compile(loss=tf.losses.mean_squared_error, optimizer='SGD')
history = model.fit(weight, total_cost, epochs=500, verbose=False)
# 训练完成后,预测10斤西瓜的总费用
print(model.predict([10]))
程序运行结果:
预测结果是12.521......,和准确值12.5非常接近!
由上面可以看出之前我们写的程序是需要事先定义好程序的规则,才能得到答案。而机器学习是给出数据和答案,让机器通过训练得到它们之间的数学关系。