Tensorflow第1课
2019-09-29 本文已影响0人
v587的毅哥
前面应该需要一个第0课来承接,先搁置,后面补充。
本文参考来源:https://colab.research.google.com/github/tensorflow/examples/blob/master/courses/udacity_intro_to_tensorflow_for_deep_learning/l02c01_celsius_to_fahrenheit.ipynb#scrollTo=Y2zTA-rDS5Xk
我们用一个例子----将摄氏度转换为华氏度的训练模型作为我们入门AI人工智能第一课。
为什么呢?且往下看:
首先,我们已知华氏度转摄氏度的公式:
华氏度(℉) = 摄氏度(℃) × 1.8 + 32
例如:
212℉ = 100℃ × 1.8 + 32
好了,到这里肯定大家会觉得这有什么好讲的?我随便用个什么程序语言分分钟搞定!垃圾!!!
先别急,我们换个角度想想:如果我们不知道这个公式,我们有什么办法来回答别人随便给的一个摄氏度数值转为华氏度呢?
我觉得肯定首先是学习与分析:
1.首先,我们会先找到很多样本(Example),比如:
32℉=0℃
33.8℉=1℃
46.4℉=8℃
71.6℉=22℃
……
2.找到规律,尽量整合为一个公式;
3.通过公式计算出结果。
到这里,我相信有一部分人可能就比较头疼了,怎么找到这个规律并整合成一个公式啊?
答案来了:我不会,我让TensorFlow帮我!
上面我们在不知道公式的情况下是先列出一些样本值,然后再巴拉巴拉。好了,现在我们将这个过程用TensorFlow来实现!
直接贴代码,空了来解释。当然,也可以看最上面的本文参考来源!
from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
import logging
import numpy as np
#这里并没有用真实值,只是取了一个大约的值来作为样本输出,目的应该是为了快吧,反正目前也不需要这么精确
celsius_q = np.array([-40, -10, 0, 8, 15, 22, 38], dtype=float)
fahrenheit_a = np.array([-40, 14, 32, 46, 59, 72, 100], dtype=float)
for i, c in enumerate(celsius_q):
print("{} degrees Celsius = {} degrees Fahrenhet".format(c, fahrenheit_a[i]))
l0 = tf.keras.layers.Dense(units=1, input_shape=[1])
model = tf.keras.Sequential([l0])
model.compile(loss='mean_squared_error',
optimizer=tf.keras.optimizers.Adam(0.1))
history = model.fit(celsius_q, fahrenheit_a, epochs=500, verbose=False)
print("Finished training the model")
print(model.predict([100.0]))
这个程序最后输入100.0
,输出211.2939
或者其他值,不过都是比较接近的。
因为这种值本来就是机器猜出来的,可能每次都有点区别。
由此可以看到:我们在没有给它公式而只给了几组样本数据的的前提下它也能给出一个非常近似的答案!
是不是觉得TensorFlow特别牛皮?
先到这吧。云顶之弈去咯。。。