激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - keras的ImageDataGenerator和flow()的用法說明

keras的ImageDataGenerator和flow()的用法說明

2020-07-04 09:24o0程卓0o Python

這篇文章主要介紹了keras的ImageDataGenerator和flow()的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

ImageDataGenerator的參數自己看文檔

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from keras.preprocessing import image
import numpy as np
 
X_train=np.ones((3,123,123,1))
Y_train=np.array([[1],[2],[2]])
generator=image.ImageDataGenerator(featurewise_center=False,
  samplewise_center=False,
  featurewise_std_normalization=False,
  samplewise_std_normalization=False,
  zca_whitening=False,
  zca_epsilon=1e-6,
  rotation_range=180,
  width_shift_range=0.2,
  height_shift_range=0.2,
  shear_range=0,
  zoom_range=0.001,
  channel_shift_range=0,
  fill_mode='nearest',
  cval=0.,
  horizontal_flip=True,
  vertical_flip=True,
  rescale=None,
  preprocessing_function=None,
  data_format='channels_last')
 
a=generator.flow(X_train,Y_train,batch_size=20)#生成的是一個迭代器,可直接用于for循環
'''
batch_size如果小于X的第一維m,next生成的多維矩陣的第一維是為batch_size,輸出是從輸入中隨機選取batch_size個數據
batch_size如果大于X的第一維m,next生成的多維矩陣的第一維是m,輸出是m個數據,不過順序隨機
,輸出的X,Y是一一對對應的
如果要直接用于tf.placeholder(),要求生成的矩陣和要與tf.placeholder相匹配
 
'''
X,Y=next(a)
 
print(Y)
X,Y=next(a)
 
print(Y)
X,Y=next(a)
 
print(Y)
X,Y=next(a)

輸出

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[[2]
 [1]
 [2]]
 
[[2]
 [2]
 [1]]
 
[[2]
 [2]
 [1]]
 
[[2]
 [2]
 [1]]

補充知識:tensorflow 與keras 混用之坑

在使用tensorflow與keras混用是model.save 是正常的但是在load_model的時候報錯了在這里mark 一下

其中錯誤為:TypeError: tuple indices must be integers, not list

再一一番百度后無結果,上谷歌后找到了類似的問題。但是是一對鳥文不知道什么東西(翻譯后發現是俄文)。后來谷歌翻譯了一下找到了解決方法。故將原始問題文章貼上來警示一下

原訓練代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
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("Сохранение завершено!")

模型載入

?
1
2
3
4
5
6
7
8
9
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("Загрузка завершена!")

報錯

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/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不能一起工作;只需更改導入字符串即可。)

強調文本 強調文本

?
1
2
3
4
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

以上這篇keras的ImageDataGenerator和flow()的用法說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/CZ505632696/article/details/79515782

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品99久久久久久久vr | 成年人激情在线 | 国产999视频在线观看 | 久久亚洲综合色 | 亚洲精品xxx | 久久久久久久黄色片 | 日韩深夜视频 | 国产午夜精品理论片a级探花 | 久久久久久久久成人 | 成人aaaaa片毛片按摩 | 久久生活片 | 欧美视频首页 | 中文字幕在线观看视频一区 | 91成人免费看片 | 自偷自偷久产久精九国品在线 | 欧美另类在线视频 | 4480午夜 | 国产精品成人一区二区三区电影毛片 | 成人午夜免费网站 | 最新se94se在线欧美 | 亚洲精中文字幕二区三区 | 欧美 亚洲 激情 | 免费黄色欧美视频 | 欧美人一级淫片a免费播放 久久99精品久久久久久园产越南 | 日本aaaa片毛片免费观蜜桃 | 久久αv | 欧美日韩在线看片 | 2021免费日韩视频网 | 免费黄色在线观看网站 | 国产一区在线观看视频 | 国产亚洲精品久久久久久久 | 九九精品视频免费 | 天天色图片 | 欧美一区在线观看视频 | 老a影视网站在线观看免费 欧美日韩成人一区二区 | hd性videos意大利复古 | 色99久久| 免费高清一级欧美片在线观看 | 国产精品视频二区不卡 | 欧美黄一区 | 黄色一级视频 |