TensorFlow学习报告
1.TensorFlow简介
TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的Google开源软件库,为机器学习工程中的问题提供了一整套解决方案。Tensor(张量)意味着 N 维数组,Flow(流)意味着基于数据流图的计算,TensorFlow即为张量从图的一端流动到另一端。
2.TensorFlow优点
第一,基于Python,写的很快并且具有可读性。
第二,在多GPU系统上的运行更为顺畅。
第三,代码编译效率较高。
第四,社区发展的非常迅速并且活跃。
第五,能够生成显示网络拓扑结构和性能的可视化图。
3.TensorFlow一些基本用法
矩阵用法
#创建一个2行3列全为常量8的矩阵 filled_tsr = tf.fill([2, 3], 8) print(filled_tsr) """ 运行结果: tf.Tensor( [[8 8 8] [8 8 8]], shape=(2, 3), dtype=int32) """ #自定义一个矩阵 constant_tsr = tf.constant([1, 2, 3]) print(constant_tsr) """ 运行结果: tf.Tensor([1 2 3], shape=(3,), dtype=int32) """
tensor基本运算
#tensor相加 constant_tsr2 = tf.constant([[1, 2, 3],[3,2,1]]) constant_tsr3 = tf.constant([1, 2, 3]) print(constant_tsr2+constant_tsr3) """ 运行结果: tf.Tensor( [[2 4 6] [4 4 4]], shape=(2, 3), dtype=int32) """ #tensor相减 constant_tsr2 = tf.constant([[1, 2, 3],[3,2,1]]) constant_tsr3 = tf.constant([1, 2, 3]) print(constant_tsr2-constant_tsr3) """ 运行结果: tf.Tensor( [[ 0 0 0] [ 2 0 -2]], shape=(2, 3), dtype=int32) """ #tensor相乘 constant_tsr2 = tf.constant([[1, 2, 3],[3,2,1]]) constant_tsr3 = tf.constant([1, 2, 3]) print(constant_tsr2 * constant_tsr3) """ 运行结果: tf.Tensor( [[1 4 9] [3 4 3]], shape=(2, 3), dtype=int32) """ #tensor相除 constant_tsr2 = tf.constant([[1, 2, 3],[3,2,1]]) constant_tsr3 = tf.constant([1, 2, 3]) print(constant_tsr2 / constant_tsr3) """ 运行结果: tf.Tensor( [[1. 1. 1. ] [3. 1. 0.33333333]], shape=(2, 3), dtype=float64) """
输入输出用法
import tensorflow as tf w1=tf.Variable(tf.random_normal([2,3],stddev=1 )) w2=tf.Variable(tf.random_normal([3,1],stddev=1)) #placeholder 就是输入训练数据的入口 x=tf.placeholder(tf.float32,shape=(1,2),name='input') a=tf.matmul(x,w1) y=tf.matmul(a,w2) y2=tf.matmul(a*2,w2) with tf.Session() as sess: init_op=tf.global_variables_initializer().run() #想查看输出,必须要在run()中,第一个参数就是获得输出, #同时,输入就是feed_dict的中字典形式输入,与上面的placeholder相呼应 print(sess.run([y,y2],feed_dict={x:[[0.5,0.9]]}))
4.高阶API标准化搭建实例
例:Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度、花萼宽度、花瓣长度、花瓣宽度4个属性预测鸢尾花卉属于Iris Setosa(山鸢尾)、Iris Versicolour(杂色鸢尾),以及 Iris Virginica(维吉尼亚鸢尾)这3个种类中的哪一类。Iris 以鸢尾花的特征作为数据来源,常用在分类操作中。该数据集由3种不同类型的鸢尾花的各50个样本数据构成。其中的一个种类与另外两个种类是线性可分离的,后两个种类是非线性可分离的。
import tensorflow as tf import numpy as np from sklearn.datasets import load_iris data=load_iris()#读取数据集 iris_data=np.float32(data.data)#获取数据集中的鸢尾花4个属性 iris_target=data.target#获取鸢尾花的类别 iris_target=tf.keras.util.to_categorical(iris_target,num_classes=3)#标签转为one-hot标签 train_data=tf.data.Dataset.from_tensor_slices((iris_data,iris_target)).batch(128)#批量加载数据 inputs=tf.keras.layers.Input(shape=(4))#特征共有四维,所以输入为4 x=tf.keras.layers.Dense(32,activation='relu')(inputs) x=tf.keras.layers.Dense(64,activation='relu')(x) outputs=tf.keras.layers.Dense(3,activation='softmax')(x) model=tf.keras.Model(inputs=inputs,outputs=outputs) model.compile(optimizer=tf.optimizers.Adam(Ir=1e-3),loss=tf.losses.categorical_crossentropy,metrics=['accuracy'])#模型编译 model.fit(train_data,epochs=500)#模型训练 score=model.evaluate(iris_data,iris_target)#模型评估 print("last score:",score)