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)

 

posted @ 2022-04-25 17:56  龙尧  阅读(65)  评论(0编辑  收藏  举报