tensorflow + keras 踩坑分享

目的:在tensorflow框架code中使用keras的Imagedatagenerator,另外还要成功编译一个c++的cuda程序sh
环境:ubuntu16.04(真机双系统下)anaconda虚拟环境 python3.6 tensorflow1.12 keras2.24
{protobuf3.6.1!!!!!}
画布多说先上tensorlflow库的各个版本对照!!!!太太太重要了
TensorFlow-1.12¶
tensorflow库版本

由于前期操作的不确定性,并没有留图作例,但是希望自己总结到的东西能帮助到你。

tensorflow和keras的匹配问题
首先tensorflow自己需要匹配好cuda cudnn list of env
keras要选择对应tensorflow版本的,比如我这里选择安装老版本的tensorflow1.12,对应的keras版本的是2.24,好了这一点注意到了。

运行 import tensorflow或者keras会出现 各种奇怪的bug,最多的就是xxx找不到,当然第一选择是去把提示找不到的包给装上,然后继续出现xxx又找不到!wtf?什么玩意儿!

查了一通都是各种安包解决找不到的问题,尝试了下放弃了

最后回去查tensorflow1.12的对应包版本,发现protobuf版本高了最新的都3.11×了,tf1.12给的才3.6.1,感觉有戏,试了下果然搞定了。
虽然是关键一步,比按照提示装包也简单太多,但是想不到就很惨,换tf1.15又需要换cuda和cudnn就来回折腾。

这里也是我最想提的,就是在安装老版本tf的时候,尤其是各种框架配合使用的时候,一定要去看发行版对应的各种库的版本,先保证这一步,比出现xx找不到,一个一个解决靠谱,那是个无底洞!!找不到就是没有,没有就是版本布匹配,要么升要么降级!对于哪些要升降级,这个感觉就是经验,像pip这种最新版一般没问题,而且有些时候需要新版,protobuf numpy 这些比较核心的包建议别求新。

keras测试代码:

import keras
from keras.preprocessing.image import ImageDataGenerator
import numpy as np
import time
imgs = np.random.randint(0,10,size=(7,100,100,3))

datagen=ImageDataGenerator(
                featurewise_center=True,
                featurewise_std_normalization=True,
                rotation_range=20, width_shift_range=0.2,
                height_shift_range=0.2, horizontal_flip=True
)
f=datagen.flow(imgs,[0,1,2,3,4,5,6],batch_size=3)

for index,(x,y) in enumerate(f):
    if index==10:
        break
    time.sleep(1)
    print(x.shape,y)

结果:
Using TensorFlow backend.

/home/××××/.conda/envs/tf3/lib/python3.6/site-packages/keras_preprocessing/image/image_data_generator.py:716: UserWarning: This ImageDataGenerator specifies `featurewise_center`, but it hasn't been fit on any training data. Fit it first by calling `.fit(numpy_data)`.
  warnings.warn('This ImageDataGenerator specifies '
/home/boss-lio/.conda/envs/tf3/lib/python3.6/site-packages/keras_preprocessing/image/image_data_generator.py:724: UserWarning: This ImageDataGenerator specifies `featurewise_std_normalization`, but it hasn't been fit on any training data. Fit it first by calling `.fit(numpy_data)`.
  warnings.warn('This ImageDataGenerator specifies '
(3, 100, 100, 3) [6 4 3]
(3, 100, 100, 3) [5 0 1]
(1, 100, 100, 3) [2]
(3, 100, 100, 3) [4 1 3]
(3, 100, 100, 3) [6 2 5]
(1, 100, 100, 3) [0]
(3, 100, 100, 3) [6 2 5]
(3, 100, 100, 3) [1 4 0]
(1, 100, 100, 3) [3]
(3, 100, 100, 3) [6 2 3]
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值