人工智能第五章学习报告
【案例5.1】导入TensorFlow,测试版本,并创建打印一个tf常量,获取常量的值
import tensorflow as tf print(tf.__version__) a=tf.constant(2.0) print(a)
运行结果:
【案例5.2】在Tensorflow2.x的环境中使用1.x版本的代码 import tensorflow.compat.v1 as tf tf.disable_v2_behavior() a=tf.constant(2.0) with tf.Session() as sess: print(sess.run(a)) print(a)
运行结果:
【案例5.3】TensorFlow常量的使用
import tensorflow as tf #声明一个标题常量 t_1=tf.constant(2) t_2=tf.constant(2) #常量相加 t_add=tf.add(t_1,t_2) #一个形如一行三列的常量向量可以用如下代码声明 t_3=tf.constant([4,3,2]) #定义一个形状为[M,N]的全0张量和全1张量 zero=tf.zeros(shape=[3,3]) ones=tf.ones(shape=[3,3]) print(t_add)
【案例5.4】TensorFlow变量的使用
#直接赋值初始化 import tensorflow as tf #直接给变量赋值初始化 bias1=tf.Variable(2) #通过initial_value显示赋值初始化 bias2=tf.Variable(initial_value=3.) bias1,bias2
#使用初始化函数初始化 import tensorflow as tf a=tf.Variable(tf.zeros([2,1])) #将形状为[2,1]张量初始化为0 b=tf.Variable(tf.zeros_like(a)) #返回一个和给定tensor同样shape的tensor,其中的元素全部置0 c=tf.Variable(tf.ones([2,1])) #初始化为1 d=tf.Variable(tf.ones_like(a)) #将与a一个形状的张量初始化为1 e=tf.fill([2,3],4) #将指定形状的张量初始化为指定数值 print(a,b,c,d,e)
【案例5.5】TensorFlow数组转张量
import tensorflow.compat.v1 as tf tf.disable_v2_behavior() tensor = tf.constant([[1.0,2.0],[3.0,4.0]]) print("Tensor = ",tensor) array = tensor.eval(session=tf.Session()) print(array)
运行结果:
【案例5.6】Tensor的基础运算操作 加、减、乘、除之类的运算 import tensorflow as tf print(tf.add(1,2)) #0维向量相加 print(tf.add([1,2],[3,4])) #一维向量相加 print(tf.matmul([[1,2,3]],[[4],[5],[6]])) #矩阵相乘 print(tf.square(5)) #计算5的平方 print(tf.pow(2,3)) #计算2的3次方 print(tf.square(2)+tf.square(3)) #也支持操作符重载 print(tf.reduce_sum([1,2,3])) #计算数值的和 print(tf.reduce_mean([1,2,3])) #计算均值
运行结果:
![](https://img2022.cnblogs.com/blog/2530755/202204/2530755-20220424230915086-1652875790.png)
【案例5.7】模型搭建时常用的Tensor操作
import tensorflow as tf print(tf.argmax([1,0,0,8,6])) #返回数组内最大的索引,常用于处理one_hot向量 a=tf.constant([[1,2],[3,4],[5,6]]) b=tf.expand_dims(a,0) #在tensor中增加一个维度,0表示需要添加维度的下标为0 c=tf.expand_dims(a,1) #在tensor中增加一个维度,1表示需要添加的维度下标为1 print(a.shape,b.shape,c.shape) x=[[1,2,3],[4,5,6],[7,8,9]] y=[[2,3,4],[5,6,7],[8,9,10]] z1=tf.concat([x,y],axis=0) #按照维度0进行拼接 z2=tf.concat([x,y],axis=1) print(z1) print(z2) a=tf.Variable([[[1,2,3],[1,2,3]],[[7,8,9],[10,11,12]]]) b=tf.reshape(a,[6,2]) print(a.numpy(),'\n',b.numpy())
运行结果:
5.4 习题 简答题
(1)目前使用最广泛的两种深度学习框架是什么?
目前最主流的深度框架有 TensorFlow、Pytorch 以及 Keras。
其中:
1)TensorFlow 是被使用最广泛的一个深度学习框架,已广泛的运用在如,图像识别、图片分类等领域;
2)Pytorch 是一个开源的 Python 机器学习库,基于 Torch 开发,底层由 C++实现,也被广泛使用在人工智能领域;
3)Keras 则是 Python 编写的高级神经网络 API,它可以将 TensorFlow、CNTK,或是 Theano 作为后端程序来用,它的代码简单、易读。
(2)在TensorFlow2.x中,初始化权值和偏置常用的方法分别是什么?
在TensorFlow中,模型的权值和偏置常常被定义为变量。变量在创建的时候,需要设定其初始化方法:可以直接赋值,也可以使用初始化函数。直接赋值初始化变量。
1)正态分布初始化,tf.zeros、tf.zeros_like、tf.ones、tf.ones_like、tf.fill、tf.random.normal
2)截断正态分布初始化,tf.random.truncated_normal
3)随机均匀分布,tf.random.uniform
其中,tf.random.normal和tf.zeros是常常被用来进行权值和偏置的初始化方法。
(3)序贯式和函数式
1)序贯式1 import tensorflow as tf model = tf.keras.Sequential() #创建一个全连接层,神经元个数为256,输入为784,激活函数为relu model.add(tf.keras.layers.Dense(256, activation='relu', input_dim=784)) model.add(tf.keras.layers.Dense(128, activation='relu')) model.add(tf.keras.layers.Dense(10, activation='softmax'))
2)序贯式2
import tensorflow as tf
imput_layer = tf.keras.layers.Input(shape=(784,))
hid1_layer = tf.keras.layers.Dense(256, activation='relu')
hid2_layer = tf.keras.layers.Dense(128, activation='relu')
output_layers = tf.keras.layers.Dense(10, activation='softmax') #将层的列表传给Sequential的构造函数
model = tf.keras.Sequential(layers=[imput_layer, hid1_layer, hid2_layer, output_layers])
3)import tensorflow as tf
#创建一个模型,包含一个输入层和三个全连接层
inputs = tf.keras.layers.Input(shape=(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)
(4)使用pytorch构建一个5*3大小的随机初始化的矩阵
import torch data = torch.rand(5,3) print(data)
运行结果:
(5)请列举一些其他的深度学习框架
答:TensorFlow 、Caffe、Theano、Keras、PyTorch、MXNet。
posted on 2022-04-24 23:55 蓝螃蟹Karry0921 阅读(33) 评论(0) 编辑 收藏 举报