实验题目
1)已知两个张量[1,3,5,7]和[2,4,4,8],编写一个模型,计算两个张量的加法,输出结果,并在tensorboard中显示 2)已知张量[1,2,3,4,5,6,7,8,9,10,11,12]有12个元素,利用tf.reshape()将其形状转换为[2,3,2]的三维张量
实验过程
第一题
- 在TensorFlow中,所有的数据都通过张量的形式来表示
- 从功能的角度,张量可以简单理解为多维数组
零阶张量表示标量(scalar),也就是一个数; 一阶张量为向量(vector),也就是一维数组; n阶张量可以理解为一个n维数组; - 张量并没有真正保存数字,它保存的是计算过程张量的概念
**打开Anaconda Powershell Prompt **
conda activate tensorflow #启动tensorflow
jupyter notebook #进入jupyter notebook
![](https://img-blog.csdnimg.cn/d49fbc1ae1f24584a8ef6b9c54889cd9.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54us5a6g44CC,size_20,color_FFFFFF,t_70,g_se,x_16)
代码 ![在这里插入图片描述](https://img-blog.csdnimg.cn/4a43e59c699b4d60afbb4a1bc42d39c0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54us5a6g44CC,size_20,color_FFFFFF,t_70,g_se,x_16)
import tensorflow as tf
#清除default graph和不断增加的节点
tf.reset_default_graph()
#logdir改为自己机器上的合适路径
logdir = 'D:/log'
#定义一个简单的计算图,实现两个张量的加法
a = tf.constant([1,3,5,7],dtype = tf.int32)
b = tf.constant([2,4,4,8],dtype = tf.int32)
result = tf.add(a,b)
with tf.Session() as sess:
print(sess.run(result))
#生成一个写日志的writer,并将当前的TensorFlow计算图写入日志
writer = tf.summary.FileWriter(logdir,tf.get_default_graph())
writer.close()
这时打开自己的文件夹,在你自己所规定的路径下会多一个log的文件,里面包含了创建的日志文件。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/0ac8e5257e9647d1bcfcb426c83d1de0.png)
TensorFlow支持不同的类型
- 实数tf.float32, tf.float64
- 整数tf.int8, tf.int16, tf.int32, tf.int64, tf.uint8
- 布尔tf.bool
- 复数tf.complex64, tf.complex128
默认类型:不带小数点的数会被默认为int32带小数点的会被默认为float32
启动TensorBoard 打开Anaconda Prompt 首先也要启动tensorflow TensorBoard不需要额外安装,在TensorFlow安装时已自动完成 在Anaconda Prompt中运行TensorBoard,并将日志的地址指向程序日志输出的地址命令:
tensorboard--logdir=D:\log #后面的路径与你自己在前面保存的一致
![在这里插入图片描述](https://img-blog.csdnimg.cn/52a769738e824e89ada53c59c56f6629.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54us5a6g44CC,size_20,color_FFFFFF,t_70,g_se,x_16)
启动TensorBoard启动服务的端口默认为6006;使用–port 参数可以改编启动服务的端口 TensorBoard是一个在本地启动的服务,启动完成后在浏览器输入网址: http://localhost:6006(在命令中直接复制访问)即可进行访问。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e7516043dbe34fbdbe31116c0d84fc63.png) 注意这个后面有一个Press Ctrl+c是停止当前进程的意思千万不要点,否则直接访问失败 就像下面这张图,就因为这个简单的小原因,我卡住了好久 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f494640d0efc4f288d1ee937847ca90e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54us5a6g44CC,size_20,color_FFFFFF,t_70,g_se,x_16)
正常情况下就会进入这样一个页面,在这里选择GRAPHS ![在这里插入图片描述](https://img-blog.csdnimg.cn/3dc4cd4825d240ada66cdb19e294ec8b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54us5a6g44CC,size_20,color_FFFFFF,t_70,g_se,x_16) ![在这里插入图片描述](https://img-blog.csdnimg.cn/af7abe6861ee43e1a394b6f2efc007b6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54us5a6g44CC,size_20,color_FFFFFF,t_70,g_se,x_16) 这样第一个实验就做完了
第二题
对于第二题是非常简单的直接在jupyter notebook中输入代码即可
import tensorflow.compat.v1 as tf #导入tensorflow类库,别名为tf
#定义c1是一维张量,共有12个元素
c1 = tf.constant([1,2,3,4,5,6,7,8,9,10,11,12],dtype = tf.float32,name = "c1")
c2 = tf.reshape(c1,[2,3,2])
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(sess.run(c1))
print(sess.run(c2))
![在这里插入图片描述](https://img-blog.csdnimg.cn/5235aa18e9ac4a72a4c97efde522f4df.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54us5a6g44CC,size_20,color_FFFFFF,t_70,g_se,x_16)
|