關(guān)于tensorflow和keras版本的對應(yīng)關(guān)系
tensorflow和keras版本對應(yīng)關(guān)系
| Tensorflow版本 | Keras版本 |
|---|---|
| Tensorflow 2.1 Tensorflow 2.0 Tensorflow 1.15 | Keras 2.3.1 |
| Tensorflow 1.14 | Keras 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.4 | Keras 2.0.8 |
| Tensorflow 1.3 Tensorflow 1.2 Tensorflow 1.1 Tensorflow 1.0 | Keras 2.0.6 |
| Tensorflow 0.12 | Keras 1.2.2 |
tensorflow與keras混用之坑
在使用tensorflow與keras混用是model.save 是正常的但是在load_model的時(shí)候報(bào)錯(cuò)了在這里mark 一下
其中錯(cuò)誤為:TypeError: tuple indices must be integers, not list
再一一番百度后無結(jié)果,上谷歌后找到了類似的問題。但是是一對鳥文不知道什么東西(翻譯后發(fā)現(xiàn)是俄文)。后來谷歌翻譯了一下找到了解決方法。
故將原始問題文章貼上來警示一下
原訓(xùn)練代碼
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("Загрузка завершена!")報(bào)錯(cuò)
/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
戰(zhàn)斗種族解釋
убераю BatchNormalization всё работает хорошо. Не подскажите в чём ошибка?Выяснил что сохранение keras и нормализация tensorflow не работают вместе нужно просто изменить строку импорта.(譯文:整理BatchNormalization一切正常。 不要告訴我錯(cuò)誤是什么?我發(fā)現(xiàn)保存keras和規(guī)范化tensorflow不能一起工作;只需更改導(dǎo)入字符串即可。)
強(qiáng)調(diào)文本 強(qiáng)調(diào)文本
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
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用numpy對數(shù)組求平均時(shí)如何忽略nan值
這篇文章主要介紹了使用numpy對數(shù)組求平均時(shí)如何忽略nan值,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
Appium+python+unittest搭建UI自動(dòng)化框架的實(shí)現(xiàn)
本文主要介紹了Appium+python+unittest搭建UI自動(dòng)化框架的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03
使用pyecharts生成Echarts網(wǎng)頁的實(shí)例
今天小編就為大家分享一篇使用pyecharts生成Echarts網(wǎng)頁的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
一文詳解Python中數(shù)據(jù)清洗與處理的常用方法
在數(shù)據(jù)處理與分析過程中,缺失值、重復(fù)值、異常值等問題是常見的挑戰(zhàn),本文總結(jié)了多種數(shù)據(jù)清洗與處理方法,文中的示例代碼簡潔易懂,有需要的小伙伴可以參考下2025-01-01
Python實(shí)現(xiàn)GB格式序列文件轉(zhuǎn)換Fasta格式文件
這篇文章主要為大家介紹了Python實(shí)現(xiàn)GB格式序列文件轉(zhuǎn)換Fasta格式文件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
python模塊shutil函數(shù)應(yīng)用示例詳解教程
這篇文章主要為大家介紹了python模塊中shutil函數(shù)的應(yīng)用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-10-10
使用Python實(shí)現(xiàn)簡單的任務(wù)自動(dòng)化
在現(xiàn)代工作和生活中,任務(wù)自動(dòng)化可以極大地提高效率和準(zhǔn)確性,Python則是實(shí)現(xiàn)任務(wù)自動(dòng)化的理想選擇,下面我們來看看如何用Python實(shí)現(xiàn)任務(wù)自動(dòng)化吧2025-01-01
selenium+python 去除啟動(dòng)的黑色cmd窗口方法
今天小編就為大家分享一篇selenium+python 去除啟動(dòng)的黑色cmd窗口方法。具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05

