1 关于Tensorflow环境配置的各种Bug:
import tensorflow as tf
前言: 这几天装各种包、各种环境, 一直不成功的都要砸电脑了, 留一些记录在前面;
引入tensorflow时候出现的99%的问题都是版本问题, tensorflow与各种包之间的依赖关系非常复杂, 一但某一个库的版本不匹配就无法正确引入Tensorflow.
解决:
- 把pip的源改为阿里云
pip config set global.index-url http://mirrors.aliyun.com/pypi/simple
- 老老实实用pip install tensorflow
- 查看报错, 看自己的哪个库与tensorflow版本不匹配, 使用pip install numpy==1.16.0等指定版本的指令修改出问题包的版本
不要同时使用pip、conda、Pycharm自带的库版本管理!!!
笔者头铁试了挂VPN下载、用PyCharm的自带库管理工具、本地安装等各种各种的歪门邪道, 最后不是装不成功、就是一下子环境里多了好几个同名包…
老老实实用pip安装才是王道…
2 如何理解Tensor?
在深度学习里,Tensor实际上就是一个多维数组(multidimensional array)。
而Tensor的目的是能够创造更高维度的矩阵、向量
参考资料: https://zhuanlan.zhihu.com/p/48982978
现在将三维的张量用一个正方体来表示:
这样子可以进一步生成更高维的张量:
粗俗的来理解: Tensorflow用张量来表示我们常用的值、矩阵
例如:
让 a = tf.add(1,2)
我们可以知道调用add函数后1+2的值应该为3, 但这里, tensorflow用一个张量来表示a
3如何得到a = tf.add(1,2)中a的值?
3.1 sess = tf.Session()
我们需要创建一个Session对象. 之后我们可以通过Session对象的run(op)来执行我们想要的操作。tensorflow的内核使用更加高效的C++作为后台,以支撑它的密集计算。tensorflow把前台(即python程序)与后台程序之间的连接称为"会话(Session)"。
3.2 sess.run(a)
run()方法
Session对象创建完毕,便可以使用它最重要的方法run()来启动所需要的数据流图进行计算。
回答问题, 如何得到a的值?
建立一个session对象, 调用run方法 让改tensorflow帮我们计算a的值并输出
run()方法有4个参数:
run(
fetches,
feed_dict=None
options=None,
run_metadata=None
)
核心可以理解为计算fetches中的值
fetches参数: ‘取得之物’,表示数据流图中能接收的任意数据流图元素,各类Op/Tensor对象。Op,run()将返回None;Tensor,rnu()将返回Numpy数组。
run的第二个参数怎么用?
feed_dict 可以用来输入一些预设的占位符,或是修改其中某些输入变量的值, 为tensor的计算提供必要的输入