关于tensorflow和keras版本的对应关系

 更新时间:2023年06月25日 10:16:01   作者:StarkerRegen  
这篇文章主要介绍了关于tensorflow和keras版本的对应关系,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

tensorflow和keras版本对应关系

Tensorflow版本Keras版本
Tensorflow 2.1
Tensorflow 2.0
Tensorflow 1.15
Keras 2.3.1
Tensorflow 1.14Keras 2.2.5
Tensorflow 1.13
Tensorflow 1.12
Tensorflow 1.11
Keras 2.2.4
Tensorflow 1.10
Tensorflow 1.9
Keras 2.2.0
Tensorflow 1.8
Tensorflow 1.7
Tensorflow 1.5
Keras 2.1.6
Tensorflow 1.4Keras 2.0.8
Tensorflow 1.3
Tensorflow 1.2
Tensorflow 1.1
Tensorflow 1.0
Keras 2.0.6
Tensorflow 0.12Keras 1.2.2

tensorflow与keras混用之坑

在使用tensorflow与keras混用是model.save 是正常的但是在load_model的时候报错了在这里mark 一下

其中错误为:TypeError: tuple indices must be integers, not list

再一一番百度后无结果,上谷歌后找到了类似的问题。但是是一对鸟文不知道什么东西(翻译后发现是俄文)。后来谷歌翻译了一下找到了解决方法。

故将原始问题文章贴上来警示一下

原训练代码

from tensorflow.python.keras.preprocessing.image import ImageDataGenerator
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Conv2D, MaxPooling2D, BatchNormalization
from tensorflow.python.keras.layers import Activation, Dropout, Flatten, Dense
#Каталог с данными для обучения
train_dir = 'train'
# Каталог с данными для проверки
val_dir = 'val'
# Каталог с данными для тестирования
test_dir = 'val'
# Размеры изображения
img_width, img_height = 800, 800
# Размерность тензора на основе изображения для входных данных в нейронную сеть
# backend Tensorflow, channels_last
input_shape = (img_width, img_height, 3)
# Количество эпох
epochs = 1
# Размер мини-выборки
batch_size = 4
# Количество изображений для обучения
nb_train_samples = 300
# Количество изображений для проверки
nb_validation_samples = 25
# Количество изображений для тестирования
nb_test_samples = 25
model = Sequential()
model.add(Conv2D(32, (7, 7), padding="same", input_shape=input_shape))
model.add(BatchNormalization())
model.add(Activation('tanh'))
model.add(MaxPooling2D(pool_size=(10, 10)))
model.add(Conv2D(64, (5, 5), padding="same"))
model.add(BatchNormalization())
model.add(Activation('tanh'))
model.add(MaxPooling2D(pool_size=(10, 10)))
model.add(Flatten())
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))
model.compile(loss='categorical_crossentropy',
              optimizer="Nadam",
              metrics=['accuracy'])
print(model.summary())
datagen = ImageDataGenerator(rescale=1. / 255)
train_generator = datagen.flow_from_directory(
    train_dir,
    target_size=(img_width, img_height),
    batch_size=batch_size,
    class_mode='categorical')
val_generator = datagen.flow_from_directory(
    val_dir,
    target_size=(img_width, img_height),
    batch_size=batch_size,
    class_mode='categorical')
test_generator = datagen.flow_from_directory(
    test_dir,
    target_size=(img_width, img_height),
    batch_size=batch_size,
    class_mode='categorical')
model.fit_generator(
    train_generator,
    steps_per_epoch=nb_train_samples // batch_size,
    epochs=epochs,
    validation_data=val_generator,
    validation_steps=nb_validation_samples // batch_size)
print('Сохраняем сеть')
model.save("grib.h5")
print("Сохранение завершено!")

模型载入

from tensorflow.python.keras.preprocessing.image import ImageDataGenerator
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Conv2D, MaxPooling2D, BatchNormalization
from tensorflow.python.keras.layers import Activation, Dropout, Flatten, Dense
from keras.models import load_model
print("Загрузка сети")
model = load_model("grib.h5")
print("Загрузка завершена!")

报错

/usr/bin/python3.5 /home/disk2/py/neroset/do.py
/home/mama/.local/lib/python3.5/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
  from ._conv import register_converters as _register_converters
Using TensorFlow backend.
Загрузка сети
Traceback (most recent call last):
  File "/home/disk2/py/neroset/do.py", line 13, in <module>
    model = load_model("grib.h5")
  File "/usr/local/lib/python3.5/dist-packages/keras/models.py", line 243, in load_model
    model = model_from_config(model_config, custom_objects=custom_objects)
  File "/usr/local/lib/python3.5/dist-packages/keras/models.py", line 317, in model_from_config
    return layer_module.deserialize(config, custom_objects=custom_objects)
  File "/usr/local/lib/python3.5/dist-packages/keras/layers/__init__.py", line 55, in deserialize
    printable_module_name='layer')
  File "/usr/local/lib/python3.5/dist-packages/keras/utils/generic_utils.py", line 144, in deserialize_keras_object
    list(custom_objects.items())))
  File "/usr/local/lib/python3.5/dist-packages/keras/models.py", line 1350, in from_config
    model.add(layer)
  File "/usr/local/lib/python3.5/dist-packages/keras/models.py", line 492, in add
    output_tensor = layer(self.outputs[0])
  File "/usr/local/lib/python3.5/dist-packages/keras/engine/topology.py", line 590, in __call__
    self.build(input_shapes[0])
  File "/usr/local/lib/python3.5/dist-packages/keras/layers/normalization.py", line 92, in build
    dim = input_shape[self.axis]
TypeError: tuple indices must be integers or slices, not list
 
Process finished with exit code 1

战斗种族解释

убераю BatchNormalization всё работает хорошо. Не подскажите в чём ошибка?Выяснил что сохранение keras и нормализация tensorflow не работают вместе нужно просто изменить строку импорта.(译文:整理BatchNormalization一切正常。 不要告诉我错误是什么?我发现保存keras和规范化tensorflow不能一起工作;只需更改导入字符串即可。)

强调文本 强调文本

keras.preprocessing.image import ImageDataGenerator
keras.models import Sequential
keras.layers import Conv2D, MaxPooling2D, BatchNormalization
keras.layers import Activation, Dropout, Flatten, Dense

##完美解决

##附上原文链接

https://qa-help.ru/questions/keras-batchnormalization

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 如何用Python对数学函数进行求值、求偏导

    如何用Python对数学函数进行求值、求偏导

    这篇文章主要介绍了如何用Python对数学函数进行求值、求偏导问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 使用Python Tkinter实现剪刀石头布小游戏功能

    使用Python Tkinter实现剪刀石头布小游戏功能

    这篇文章主要介绍了使用Python Tkinter实现剪刀石头布小游戏功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Python使用pypdf实现按自定义页码拆分PDF文件

    Python使用pypdf实现按自定义页码拆分PDF文件

    在处理 PDF 文件时,我们经常需要按章节或页码范围拆分 PDF,本文将分享一个简单实用的 Python 方法,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-11-11
  • 利用Python判断你的密码难度等级

    利用Python判断你的密码难度等级

    很多网站在用户注册账号的时候为了保证账户的安全,都会自动检测用户密码的强度并给出提醒让用户设置一个相对安全的密码。这篇文章主要给大家介绍了关于利用Python判断你的密码难度等级,需要的朋友可以参考下
    2021-06-06
  • Python光学仿真数值分析求解波动方程绘制波包变化图

    Python光学仿真数值分析求解波动方程绘制波包变化图

    这篇文章主要为大家介绍了Python光学仿真通过数值分析求解波动方程并绘制波包变化图的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-10-10
  • 异步任务队列Celery在Django中的使用方法

    异步任务队列Celery在Django中的使用方法

    对于网站来说,给用户一个较好的体验是很重要的事情,其中最重要的指标就是网站的浏览速度。因此服务端要从各个方面对网站性能进行优化,这篇文章主要介绍了异步任务队列Celery在Django中的使用方法,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Pythonic版二分查找实现过程原理解析

    Pythonic版二分查找实现过程原理解析

    这篇文章主要介绍了Pythonic版二分查找实现过程原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • python各种语言间时间的转化实现代码

    python各种语言间时间的转化实现代码

    这篇文章主要介绍了python各种语言间时间的转化,需要的朋友可以参考下
    2016-03-03
  • Pywinauto基础教程之控件操作

    Pywinauto基础教程之控件操作

    这篇文章主要给大家介绍了关于Pywinauto基础教程之控件操作的相关资料,pywinauto库是一个用于在Windows上自动化操作的库,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • opencv 图像滤波(均值,方框,高斯,中值)

    opencv 图像滤波(均值,方框,高斯,中值)

    这篇文章主要介绍了opencv 图像滤波(均值,方框,高斯,中值),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07

最新评论