tensorflow2 案例(TensorFlow2 基础知识: Tensor, Shape, Rank)

本文目录
- TensorFlow2 基础知识: Tensor, Shape, Rank
- tensorflow2 AttributeError: module ’tensorflow’ has no attribute ’Session’问题解决方法
- 国内源升级tensorflow2和tensorflow probability
- tensorflow2.0(2)-自定义Dense层以及训练过程
- ubuntu tensorflow2 兼容性
- 因tensorflow版本问题造成的error
TensorFlow2 基础知识: Tensor, Shape, Rank
Tensor 是 TensorFlow 中基础的计算单元,它包括以下四个主要组成部分:
当不知道某个维度的大小时, 可以用 None 代替, 表示 Unknown
实际使可能遇到的几种Shape 的情况
因为TensorFlow 是先定义, 后执行, 有些信息在运行 Computation Graph 的时候再运算, 所以会出现上述在定义时, 未知的情况。
参考文档:
Understanding Tensorflow’s tensors shape: static and dynamic, Paolo Galeone, 01/28/2018
tensorflow2 AttributeError: module ’tensorflow’ has no attribute ’Session’问题解决方法
AttributeError: module ‘tensorflow’ has no attribute ‘Session’
tensorflow2删除了 tf.Session()
tf.Session() 将改为tf.compat.v1.Session()
或者版本降级:pip install tensorflow==1.4
eg.
国内源升级tensorflow2和tensorflow probability
在conda 环境, 升级tensorflow和tensorflow probability。
1. 首先使用
conda search tensorflow
(在conda 的tensorflow安装环境,见历史文章 conda安装tensorflow )
查看当前conda环境TF的可安装版本。
2. 接着升级到指定版本, 一般可采用conda install tensorflow-gpu=version, 但经常会安装太慢,因此需要换国内源。
3. 还是在conda 环境, 假定conda已经创建好tensorflow安装环境(见历史文章 conda安装tensorflow ), 那么只需要在conda环境采用pip3安装即可,
***隐藏网址***
最后的网址是指定国内安装源,也可切换成其他国内安装源。
升级tensor flow probability也是类似
***隐藏网址***
tensorflow2.0(2)-自定义Dense层以及训练过程
之前展示了tensorflow2.0的一个初级的实用例子作为开始,对比1.x版本操作还是有好很多的。接下来也将继续从比较基础的层面去了解tf2.0的各种实现
tensorflow2.0在上以keras去搭建网络,这种封装好的基础/高级api在使用上无疑更便捷,但在学习的过程中也不妨自己去实现一些功能,加深理解。
以实现最简单的全连接层和训练过程为例,
简单搭个网络:
我们可以用类去自定义Dense的功能,也是非常简单的
这一样来,就可以直接用自定义的类DenseLayer去替换keras的全连接层
对于实现分类的损失函数而言,也是简单粗暴的,对于标签的格式是one_hot的,用 tf.nn.softmax_cross_entropy_with_logits ,
反之 tf.nn.sparse_softmax_cross_entropy_with_logits ,本文自然用到了后者。
关于tf2.0,貌似 tf.GradientTape() 保留了下来,自定义梯度计算这一部分可以作为一个篇章去讲述,以后也会去探索
所以把单步训练和梯度更新过程写在一起
因为在loss_func的计算里包含了softmax,所以在最后一层不添加激活函数
参考上一篇文章,但也有不一样的地方,其中没用到测试集,只关注训练时loss的变化过程
最终可以看到loss是降得很快的
end.
ubuntu tensorflow2 兼容性
目前ubuntu上的tensorflow2 兼容仅支持 CPU 的 TensorFlow。
如果您的系统没有 NVIDIA_ GPU,则必须安装此版本。请注意,此版本的 TensorFlow 通常更容易安装(用时通常在 5 或 10 分钟内),所以即使您拥有 NVIDIA GPU,我们也建议先安装此版本。
支持 GPU 的 TensorFlow。TensorFlow 程序在 GPU 上的运行速度通常要比在 CPU 上快得多。因此,如果您的系统配有满足以下所示先决条件的 NVIDIA_ GPU,并且您需要运行性能至关重要的应用,则最终应安装此版本。根据您的需要选择。
因tensorflow版本问题造成的error
1.
```
Traceback (most recent call last): File "model_VQA.py", line 2, inimport tensorflow as tf File "/home/supermicro/.local/lib/python2.7/site-packages/tensorflow/__init__.py", line 23, infrom tensorflow.python import * File "/home/supermicro/.local/lib/python2.7/site-packages/tensorflow/python/__init__.py", line 48, infrom tensorflow.python import pywrap_tensorflow File "/home/supermicro/.local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 28, in _pywrap_tensorflow = swig_import_helper()
File "/home/supermicro/.local/lib/python2.7/site-packages/tensorflow/python/pywrap_tensorflow.py", line 24, in swig_import_helper
_mod = imp.load_module(’_pywrap_tensorflow’, fp, pathname, description)
ImportError: libcudart.so.7.5: cannot open shared object file: No such file or directory
```
这个问题有可能是因为没有
```$ cd /usr/local/cuda/lib64
$ $ln -s libcudart.so libcudart.so.7.5
```另一个原因就是tensorflow版本不对,没有安装gpu的版本(我的环境是python2.7,cuda8.0,opencv3.1.0安装的tensorflow-gpu 1.0.1```
pip install tensorflow-gpu==1.0.1 --user```)
2.```*** Error in `python’: free(): invalid next size (fast): 0x00007f297c012430 ***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)
/lib/x86_64-linux-gnu/libc.so.6(+0x8037a)
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)
/usr/lib/nvidia-390/libnvidia-fatbinaryloader.so.390.48(+0x1d05a)
/usr/lib/nvidia-390/libnvidia-fatbinaryloader.so.390.48(+0x11c73)
......```以上问题也是tensorflow版本问题在我安装完正确版本的tensorflow的版本后自动消失。记得pip list看看有没有其他版本的tensorflow要先卸载其他版本的tensorflow哦!
最后tucao一句,配置环境真让人抓狂,一搞就大半天,不过半路出家也只能摸着石头过河啦!
最后如果版本过老可以```pip install -U tensorflow```更新一波!

更多文章:
tensorflow2 案例(TensorFlow2 基础知识: Tensor, Shape, Rank)
2026年10月14日 06:10
英国潮牌represent官网(represent owners club什么品牌)
2026年10月14日 00:40
activiti7教程(初学Activiti,已经获得了Deployment对象,怎么才能开启一个流程呢)
2026年10月13日 23:20
随机数字1 60(使用excel 的rank函数生成的不重复随机数字,如何才能排除几个特定的数字例如生成1到60随机数而不包含30)
2026年10月13日 18:20
html中placeholder(如何修改html5中的placeholder属性值的颜色)
2026年10月13日 18:00
java集合排序方法(“java set”集合的值可以排序吗)
2026年10月13日 17:50
sql select 排除某一列(sql 2008 查询排除 某一列的数据)
2026年10月13日 17:20
ubuntu下载工具(ubuntu中火狐下载工具的默认下载地址)
2026年10月13日 16:20
ssh工具apk(简单实用的SSH客户端工具—Terminal.icu)
2026年10月13日 14:30


