文章目录
今天开始在看Udacity上的TensorFlow入门课程,其中构建的第一个神经网络模型就是将摄氏度转换成华氏度,于是在这里记录一下
公式
已知摄氏度转换成华氏度有数学公式:
f = c * 1.8 + 32
而我们就要在不告知模型这个公式的前提下,通过告知一系列对应的摄氏度与华氏度样例,来训练它以实现摄氏度转华氏度这一功能
import dependencies 导入依赖项
需要引入TensorFlow
与NumPy
库构建神经网络
from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
import numpy as np
还需要引入logging
以记录日志
import logging
logger = tf.get_logger() #返回tf的日志实例
logger.setLevel(logging.ERROR)
Set up training data 建立训练数据
由于在这里我们使用的是监督式机器学习,所以准备两组链表celsius_q
和fahrenheit_a
分别代表摄氏温度与对应华氏温度,用来训练模型
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 Fahrenheit".format(c, fahrenheit_a[i]))
输出:
-40.0 degrees Celsius = -40.0 degrees Fahrenheit
-10.0 degrees Celsius = 14.0 degrees Fahrenheit
0.0 degrees Celsius = 32.0 degrees Fahrenheit
8.0 degrees Celsius = 46.0 degrees Fahrenheit
15.0 degrees Celsius = 59.0 degrees Fahrenheit
22.0 degrees Celsius = 72.0 degrees Fahrenheit
38.0 degrees Celsius = 100.0 degrees Fahrenheit
一些机器学习术语:
- Feature(特征):模型的输入。在这里即摄氏度
- Labels(标签):模型的输出。在这里即华氏度
- Example(样本):训练期间数据集的一行内容,可以是标注样本(labeled example)和无标注样本(unlabeled example)。在这里即一对摄氏度与华氏度数据,为标注样本
Create the model 创建模型
由于问题比较简单,因此我们要建立的密集网络将只需要一个单层神经元
Build a layer 建立一个层
我们会把这一层叫做l0
,并且使用tf.keras.layers.Dense
(全连接层)来建立
tf.keras.layers.Dense
-
units=1
指定本层神经元数量。神经元的数量定义了本层需要有多少内部变量来学习解决这个问题。由于这是本模