- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过引用文章来制作手写分类器:https://github.com/priya-dwivedi/Deep-Learning/blob/master/handwriting_recognition/English_Writer_Identification.ipynb .
在拟合模型时,我收到一条错误消息,指出 fir_generator 不希望有任何此类参数!
此外,虽然错误本身是一个意外的参数错误,但标记显示为类型错误,我想知道我的管道是否有问题。
这是模型。 (我排除了错误之后的所有代码,因为它不应该以任何方式相关。如果您觉得它很重要,可以引用上面链接中的代码)
Tensorflow 版本 - 1.14,Keras 版本 - 2.2.4
from __future__ import division
import numpy as np
import os
import glob
from PIL import Image
from random import *
from tensorflow.keras.utils
import to_categorical
from sklearn.preprocessing
import LabelEncoder
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
%matplotlib inline
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Flatten, Lambda, ELU, Activation, BatchNormalization
from tensorflow.keras.layers import Convolution2D, Cropping2D, ZeroPadding2D, MaxPooling2D
from tensorflow.keras.optimizers import SGD, Adam, RMSprop
import tensorflow
import tensorflow.keras
# Create sentence writer mapping
#Dictionary with form and writer mapping
d = {}
with open('forms_for_parsing.txt') as f:
for line in f:
key = line.split(' ')[0]
writer = line.split(' ')[1]
d[key] = writer
tmp = []
target_list = []
path_to_files = os.path.join('datab', '*')
for filename in sorted(glob.glob(path_to_files)):
tmp.append(filename)
image_name = filename.split(os.sep)[1]
file, ext = os.path.splitext(image_name)
parts = file.split('-')
form = parts[0] + '-' + parts[1]
for key in d:
if key == form:
target_list.append(str(d[form]))
img_files = np.asarray(tmp)
img_targets = np.asarray(target_list)
# Visualizing the data
for filename in img_files[:3]:
img=mpimg.imread(filename)
plt.figure(figsize=(10,10))
plt.imshow(img, cmap ='gray')
# Label Encode writer names for one hot encoding later
encoder = LabelEncoder()
encoder.fit(img_targets)
encoded_Y = encoder.transform(img_targets)
print(img_files[:5], img_targets[:5], encoded_Y[:5])
#split into test train and validation in ratio 4:1:1
from sklearn.model_selection import train_test_split
train_files, rem_files, train_targets, rem_targets = train_test_split(
img_files, encoded_Y, train_size=0.66, random_state=52, shuffle= True)
validation_files, test_files, validation_targets, test_targets = train_test_split(
rem_files, rem_targets, train_size=0.5, random_state=22, shuffle=True)
print(train_files.shape, validation_files.shape, test_files.shape)
print(train_targets.shape, validation_targets.shape, test_targets.shape)
# Generator function for generating random crops from each sentence
# # Now create generators for randomly cropping 113x113 patches from these images
batch_size = 16
num_classes = 50
# Start with train generator shared in the class and add image augmentations
def generate_data(samples, target_files, batch_size=batch_size, factor = 0.1 ):
num_samples = len(samples)
from sklearn.utils import shuffle
while 1: # Loop forever so the generator never terminates
for offset in range(0, num_samples, batch_size):
batch_samples = samples[offset:offset+batch_size]
batch_targets = target_files[offset:offset+batch_size]
images = []
targets = []
for i in range(len(batch_samples)):
batch_sample = batch_samples[i]
batch_target = batch_targets[i]
im = Image.open(batch_sample)
cur_width = im.size[0]
cur_height = im.size[1]
# print(cur_width, cur_height)
height_fac = 113 / cur_height
new_width = int(cur_width * height_fac)
size = new_width, 113
imresize = im.resize((size), Image.ANTIALIAS) # Resize so height = 113 while keeping aspect ratio
now_width = imresize.size[0]
now_height = imresize.size[1]
# Generate crops of size 113x113 from this resized image and keep random 10% of crops
avail_x_points = list(range(0, now_width - 113 ))# total x start points are from 0 to width -113
# Pick random x%
pick_num = int(len(avail_x_points)*factor)
# Now pick
random_startx = sample(avail_x_points, pick_num)
for start in random_startx:
imcrop = imresize.crop((start, 0, start+113, 113))
images.append(np.asarray(imcrop))
targets.append(batch_target)
# trim image to only see section with road
X_train = np.array(images)
y_train = np.array(targets)
#reshape X_train for feeding in later
X_train = X_train.reshape(X_train.shape[0], 113, 113, 1) time , and use -1
X_train = X_train.astype('float32')
X_train /= 255
#One hot encode y
y_train = to_categorical(y_train, num_classes)
yield shuffle(X_train, y_train) # literraly shuffel
train_generator = generate_data(train_files, train_targets, batch_size=batch_size, factor = 0.3)
validation_generator = generate_data(validation_files, validation_targets, batch_size=batch_size, factor = 0.3)
test_generator = generate_data(test_files, test_targets, batch_size=batch_size, factor = 0.1)
history_object = model.fit_generator(train_generator, steps_per_epoch= samples_per_epoch1,
validation_data=validation_generator,
nb_val_samples=nb_val_samples, nb_epoch=nb_epoch, verbose=1, callbacks=callbacks_list)
错误日志如下——
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-34-54937a660f6c> in <module>
1 history_object = model.fit_generator(train_generator, steps_per_epoch= samples_per_epoch1,
2 validation_data=validation_generator,
----> 3 nb_val_samples=nb_val_samples, nb_epoch=nb_epoch, verbose=1, callbacks=callbacks_list)
TypeError: fit_generator() got an unexpected keyword argument 'nb_val_samples'
最佳答案
在 Keras 2.0 之后,nb_val_samples
关键字编码为 validation_steps
.另外,我看到了nb_epoch
代码中的关键字。它编码为 epochs
.
如果您不想更改关键字,只需将您的 Keras 降级到 2.0 以下版本
关于python - 类型错误 : fit_generator() got an unexpected keyword argument 'nb_val_samples' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64180817/
我如何使用 keras 函数 fit_generator() 训练并同时保存具有最低验证损失的模型权重? 最佳答案 您可以在定义检查点时设置save_best_only=True: from kera
我应该何时以及如何使用 fit_generator?fit 和 fit_generator 有什么区别? 最佳答案 如果您已准备好所有必要方面的数据和标签,并且可以简单地将它们分配给数组 x 和 y,
使用 Keras 训练 CNN,即使我做了 model.compile,keras。 fit_generator 抛出一个运行时错误,提示在使用 fit 之前先编译我的模型。 Error: Using
我目前正在生成一个data_generate(batch_size),它接受batch_size 作为参数。 我的网络是多输入网络,有 33 个形状为 (45,8,3) 的输入 如果批量大小 = 1
def Generate(): i = 0 while 1: i = i%int(Numb/batch_size) my_input_batch = my_input[i*batch_
我有一个 Keras 模型,有 4 个张量输入和 1 个数组输出。使用 model.fit 可以正常工作方法 model.fit([inputUM, inputMU, inputUU, inputMM
我有一个包含 9 列的数据集,最后一个是带标题的 csv 格式的目标变量。我正在尝试编写一个生成器来在 keras 中训练模型。代码如下。训练在第一个时期运行,但在完成之前就永远停止/挂起。 from
我正在制作一个输入形状为 (56088,22050,1) 的语音识别模型,它作为一个整体可以从 .npy 文件(大小约为 5GB)加载到内存中,但我想弄清楚一个更好的方法。我遇到了 keras fit
我正在使用 Keras 训练神经网络。由于数据集的大小,我需要使用生成器和 fit_generator() 方法。我正在关注本教程: https://stanford.edu/~shervine/bl
我尝试使用 TensorFlow、Keras 和 ImageDataGenerator 从头开始创建一个模型,但它没有按预期进行。我仅使用生成器加载图像,因此不使用数据增强。有两个包含训练数据和测
我正在尝试调整 Keras MNIST Siamese example使用发电机。 关于example ,我们有: model.fit([tr_pairs[:, 0], tr_pairs[:, 1]]
我正在使用从文件读取数据的 fit_generator,当它到达文件末尾时,它会从下一个文件加载数据。我还在 keras 中使用有状态 RNN,因此我需要手动重置状态,在这种情况下,每次生成器加载新文
我正在尝试为我的 Keras lstm 模型编写一个生成器。将它与 fit_generator 方法一起使用。我的第一个问题是我的生成器应该返回什么?一批?序列?Keras 文档中的示例为每个数据条目
我有点困惑如何在 keras 中使用 fit_generator。 举例来说: 我们有 10000 个数据点 我们要运行 10 个 epoch 批量大小为 512 使用 fit 我们只是: x, y
我正在尝试为具有 3 个输入和一个处理文本数据的单个输出的模型实现自定义数据生成器,如下所示: # dummy model input_1 = Input(shape=(None,)) input_2
我有一个使用以下代码声明的 Keras 模型: model = tf.keras.models.Sequential() model.add(tf.keras.layers.LSTM(units=50
import os from keras.preprocessing.image import ImageDataGenerator from keras.models import Sequenti
我在 keras 的 fit_generator 函数中使用的自定义生成器函数返回的 numpy 数组的形状方面遇到了一个看似简单的问题。 生成器函数与此类似: def data_generator(
我关注了this tutorial为我的 Keras 模型创建自定义生成器。这是一个显示我面临的问题的 MWE: import sys, keras import numpy as np import
上下文: 我目前正在使用带有 Tensorflow 后端的 Keras 进行时间序列预测,因此研究了提供的教程 here . 按照本教程,我来到了 fit_generator() 的生成器的位置。方法
我是一名优秀的程序员,十分优秀!