工作之后没在用python了,都是之前在学校做项目记录的,有的问题很小白,都是一些随笔整理,有错误希望大家多包含,希望能对初学者有点用处,本来一直在草稿箱里的,但是以后应该都不会再搞这方面了就放出来了
升级到tf2.0之后无法导入keras ,直接修改导入包的代码如下`
from tensorflow.python.keras.preprocessing.image import ImageDataGenerator, img_to_array, load_img
import os
升级到tf2.0之后import tf 报错问题,修改import代码如下
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
报错cannot import name ‘imsave’ from 'scipy.misc’解决方法
1.查看scipy包的版本
2.安装pillow并降级scipy到1.2.1版本以下
pip install pillow -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install scipy==1.2.1 -i https://pypi.tuna.tsinghua.edu.cn/simple
激活tensorflow环境
# To activate this environment, use
# $ conda activate tensorflow
# To deactivate an active environment, use
# $ conda deactivate
缺失的包在tensorflow的虚拟环境下 pip install 各种即可,注意要先 activate tensorflow!
查看已经安装的包,注意同样激活tensorflow之后,在虚拟环境里面
pip list
查看tensorflow版本和其他包版本或安装路径
首先激活tensorflow环境,进入python
import tensorflow as tf
tf. __ version__ (注意:是两个下划线),这个命令查看当前已安装tensorflow的版本
tf. __ path__ (注意:是两个下划线),这个命令查看当前已安装tensorflow的安装目录
安装一些常用缺失库
(1)安装cv2:pip install opencv-python
(2)安装人脸识别的库:pip install dlib == 18.17.100
(3)安装机器学习的库:pip install sklearn
(4)安装scipy库:pip install scipy
(5)安装numpy库:pip install numpy
(6)安装Pillow图像库:pip install Pillow
(7)安装matplotlib绘图库:pip install matplotlib
(8)升级pip:python -m pip install -U pip
安装6,7使用conda install
打开tensorboard
tensorboard一定要激活tensorflow环境之后打开!
tensorboard --logdir='/PycharmProjects/tensorflow_minst/MNIST_LOG/train'
放上绝对地址
Tensorflow 2.0 !!! No module named 'tensorflow.examples.tutorials’解决办法
参考该博客Tensorflow 2.0 !!! No module named 'tensorflow.examples.tutorials’解决办法
1.进入github的tensorflow主页下载缺失的文件 网址为:https://github.com/tensorflow/tensorflow。下载整个文件并解压,找到tensorflow/examples/tutorials文件
2.找到安装tensorflow的文件夹
将之前下载的tutorials文件夹复制到这里
ModuleNotFoundError: No module named 'sklearn’
切换到tensorflow下,安装
conda install sklearn
报错。错误信息:Solving environment: failed
CondaHTTPError: HTTP 000 CONNECTION FAILED for url https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/linux-64/repodata.json
Elapsed: -
An HTTP error occurred when trying to retrieve this URL.
HTTP errors are often intermittent, and a simple retry will get you on your way.
ConnectionError(ReadTimeoutError(“HTTPSConnectionPool(host=‘mirrors.tuna.tsinghua.edu.cn’, port=443): Read timed out.”))
使用如下代码再次安装
conda install scikit-learn
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
或者ctrl+H打开.condarc文件添加并删除最后一行default
from keras.utils import np_utils
导致报错ModuleNotFoundError: No module named 'keras’
进入tensorflow虚拟环境,pip list查看已安装的包,发现没有keras。
激活tensorflow环境,进入python后,import tensorflow没出错,import keras时候提示no module named ‘keras’,安装keras。
AttributeError: module ‘tensorflow’ has no attribute 'contrib’
regularizer = tf.contrib.layers.l2_regularizer(lam)正则化函数中的contirb模块不能用
不想降版本只能改代码
如下方法参考对于TF2.0无法使用tf.contrib.layers.l2_regularizer的替代方法,使用tf.nn.l2_loss的替代方法
regularizerd_L2 = tf.contrib.layers.l2_regularizerd(0.01)
loss = regularizerd_L2(a)
这个0.01就是我们所要乘的这个值γ,但是实际上函数会自己除一个2以得到比较稳定的结果所以我们这个γ的真实值为0.005,同时我们还有一个函数tf.nn.l2_loss,这个也是计算L2正则损失,使用方法如下
loss = tf.nn.l2_loss(a)
计算二位范数实际上是把每个数单独平方之后开根号,和计算什么方差啊之类的有一点点像,但是tf.nn.l2_loss这个函数他只是平方之后,直接除以二,没有其他操作。那我们打个比方,所有的数的平方和为sum,那么上面的函数就是
(sum ** 0.5)* 0.5 *0.01
而对于下面的函数计算则是
sum * 0.5
所以我们想要等效实现最上面的一段代码我们可以这样去改
loss = ((tf.nn.l2_loss(a) * 2) ** 0.5) * 0.5 * 0.01
0.01就是你在tf.contrib.layers.l2_regularizerd()中参数的值,对应修改即可
对应我的代码修改为
报错消失,当然还有别的报错T_T 慢慢改吧
tensorflow.python.framework.errors_impl.InvalidArgumentError: logits and labels must be broadcastable: logits_size=[16,11] labels_size=[16,5]
[[node softmax_cross_entropy_with_logits (defined at /PycharmProjects/imagetest/cnn3.py:140) ]]
logits_size=[16,11] labels_size=[16,5]维度不匹配问题,需要自己修改代码中输出类别数。
IOError: [Errno 21] Is a directory
意思读取方式为图片文件,而非文件夹读取,读取路径直接写道图片文件所在的文件夹。
label = int(filename.split(’_’)[0]) # 文件名_之前的内容
ValueError: invalid literal for int() with base 10: 'banana1’
label = int(filename.split('_')[0]) # 文件名_之前的内容
这条语句是获取样本的标签,就是样本的类别。如果数据是一张张图片,图片按文件夹倒数分不同类别存放,例如类别是0、1、……100为索引的类别,文件路径加名是land\9\mysamp.jpg,那标签就隐含在路径中了,这样,只需要提取出‘9’的字符串再转换成整数就是类别索引。
如果是[-2]代表倒数第二个,是python列表或numpy数组的索引方式。
filename.split(’_’)[0]意思是输出的是文件名_之前的内容,所以_文件名之前的内容必须是数字,否则int类型转换会报错
ModuleNotFoundError: No module named 'tensorflow.contrib
在tensorflow的虚拟环境下安装silm包
pip install --upgrade tf_slim
导入silm包的时候
#import tensorflow.contrib.slim as slim
import tf_slim as slim
使用新的语句
ps:如果升级到tf2.0的版本之后,slim包大概率不能用了,tf2.0版本移除里contrib的函数,不过也看情况,能力有限,程序还是没通。
参考解决tensoflow2.x中使用tf.contrib.slim包时出现的No module named:tensorflow.contrib 问题
解决pycharm中运行程序以pytest
参考这条
AttributeError:module tensorflow no attribute app
原文代码:
if __name__ == '__main__':
tf.app.run()
报错 找不到app,按照网上的方法替换为 tf.compat.v1.run() 还是报错
最终解决办法参考
主要是因为tf.app.run()是运行程序的代码,由于使用tensorflow2.0 版本内不含app
故将头文件改成
# import tensorflow as tf
import tensorflow.compat.v1 as tf
#tf.disable_v2_behavior()
把第三行注释掉就不会报错了
NameError: name ‘Glob’ is not defined
这两句报错’‘glob’'没有被定义,这里楼主真的wtf????
file_glob = os.path.join(INPUT_DATA, dir_name, '*.' + extension)
file_list.extend(glob.glob(file_glob))
参考解决办法
将glob.glob(file_glob)改成gfile.Glob(file_glob) 报错消失
tensorboard:No dashboards are active for the current data set.
tensorboard真的令我枯了
首先一定要在激活tensorflow的环境下打开tensorboard!!
进入存放logs文件夹的上一级
使用tensorboard --logdir=test
这里的test文件夹是存放logs文件的,成功打开!!血泪史!!T—T
参考这边博客添加tensorboard代码
参考这篇博客tf2.0版本tensorboard查看graph
由于tensorflow2.0取消了sess和初始静态图,所以无法使用像1.x版本,直接将sess.graph添加进tensorboard,所以需要使用trace_on进行记录。
trace_export():停止trace,并将之前trace记录到的信息写入profiler日志文件。
trace_off():停止trace,并舍弃之前trace记录。
trace_on():开始trace
我们可以在训练时使用 tf.summary.trace_on 开启 Trace,此时 TensorFlow 会将训练时的大量信息(如计算图的结构,每个操作所耗费的时间等)记录下来。在训练完成后,使用 tf.summary.trace_export 将记录结果输出到文件。
rticle/details/105974714
卸载tensorflow重新装
首先进入激活tensorflow虚拟环境并进入
卸载
pip uninstall tensorflow
安装指定版本tensorflow,由于我之前卸载了tf2.0的现在想装回来,直接
conda install tensorflow==2.0.0
报错 省略一堆参数
Traceback (most recent call last):
File "/opt/conda/lib/python3.7/site-packages/conda/core/subdir_data.py", line 227, in _load
mod_etag_headers.get('_mod'))
File "/opt/conda/lib/python3.7/site-packages/conda/core/subdir_data.py", line 574, in fetch_repodata_remote_request
raise Response304ContentUnchanged()
conda.core.subdir_data.Response304ContentUnchanged
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/conda/lib/python3.7/site-packages/conda/exceptions.py", line 819, in __call__
return func(*args, **kwargs)
File "/opt/conda/lib/python3.7/site-packages/conda/cli/main.py", line 78, in _main
exit_code = do_call(args, p)
File "/opt/conda/lib/python3.7/site-packages/conda/cli/conda_argparse.py", line 77, in do_call
exit_code = getattr(module, func_name)(args, parser)
File "/opt/conda/lib/python3.7/site-packages/conda/cli/main_install.py", line 11, in execute
install(args, parser, 'install')
File "/opt/conda/lib/python3.7/site-packages/conda/cli/install.py", line 235, in install
force_reinstall=context.force,
File "/opt/conda/lib/python3.7/site-packages/conda/core/solve.py", line 518, in solve_for_transaction
force_remove, force_reinstall)
File "/opt/conda/lib/python3.7/site-packages/conda/core/solve.py", line 451, in solve_for_diff
final_precs = self.solve_final_state(deps_modifier, prune, ignore_pinned, force_remove)
File "/opt/conda/lib/python3.7/site-packages/conda/core/solve.py", line 180, in solve_final_state
index, r = self._prepare(prepared_specs)
File "/opt/conda/lib/python3.7/site-packages/conda/core/solve.py", line 592, in _prepare
self.subdirs, prepared_specs)
File "/opt/conda/lib/python3.7/site-packages/conda/core/index.py", line 215, in get_reduced_index
new_records = query_all(spec)
File "/opt/conda/lib/python3.7/site-packages/conda/core/index.py", line 184, in query_all
return tuple(concat(future.result() for future in as_completed(futures)))
File "/opt/conda/lib/python3.7/site-packages/conda/core/subdir_data.py", line 95, in query
self.load()
File "/opt/conda/lib/python3.7/site-packages/conda/core/subdir_data.py", line 149, in load
_internal_state = self._load()
File "/opt/conda/lib/python3.7/site-packages/conda/core/subdir_data.py", line 233, in _load
mod_etag_headers.get('_mod'))
File "/opt/conda/lib/python3.7/site-packages/conda/core/subdir_data.py", line 280, in _read_local_repdata
_internal_state = self._process_raw_repodata_str(raw_repodata_str)
File "/opt/conda/lib/python3.7/site-packages/conda/core/subdir_data.py", line 317, in _process_raw_repodata_str
json_obj = json.loads(raw_repodata_str or '{}')
File "/opt/conda/lib/python3.7/json/__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "/opt/conda/lib/python3.7/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/opt/conda/lib/python3.7/json/decoder.py", line 353, in raw_decode
obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 10485587 (char 10485586)
镜像源的问题,解决方案
首先查看镜像源
conda config --show
找到channels呢一行查看都是什么源,由于清华源好像有问题,所以替换为科大源
移除清华源
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
添加科大源
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
使用该源
conda config --set show_channel_urls yes
重新安装tensorflow==2.0.0
装好之后出现测试,输入python之后import tensorflow as tf 之后出现
AttributeError: module ‘tensorflow‘ has no attribute ‘compat‘
解决方法:
使用conda list查看tensorflow版本 发现
tensorflow2.0.0
tensorflow-estimator2.1.0
不匹配
重新卸载tensorflow之后
再次安装
conda insatll tensorflow-estimator==2.1.0
测试成功