小编Tol*_*sch的帖子

如何使用KerasClassifier验证分割并使用scitkit学习GridSearchCV

我想尝试测试一些超参数,这就是我想使用 GridSearchCV,因为这似乎就是这样做的方法。

但我也想使用验证分割。使用 EarlyStopping 或/和 ReduceLROnPlateau 等回调。所以我的问题是:我如何正确实现 GridSearchCV +validation_split,验证分割中的任何数据都不会用于训练,并且整个训练集都用于训练我的模型?Afaik GridSearchCV 再次分割我剩余的训练数据(即 1-validation_split)并再次分割它?我得到了很高的准确度,但我认为我没有正确分割数据

model = KerasClassifier(build_fn=create_model,verbose=2, validation_split=0.1)
optimizers = ['rmsprop', 'adam']
init = ['glorot_uniform',
        #'normal',
        'uniform',
        'he_normal',
        #'lecun_normal',
        #'he_uniform'
       ]
epochs = [3] #5,8,10,30
batches = [64] #32,64
param_grid = dict(optimizer=optimizers, epochs=epochs, batch_size=batches, init=init)
grid = GridSearchCV(estimator=model, param_grid=param_grid)
grid_result = grid.fit(X_train, Y_train)
Run Code Online (Sandbox Code Playgroud)

scikit-learn keras data-science tf.keras

5
推荐指数
1
解决办法
1587
查看次数

`decode_predictions` 需要一批预测(即形状的二维数组(样本,1000))。找到具有形状的数组:(1, 5)

A 为我自己的测试数据重新训练了 inception_v3 模型。(背景故事:在我尝试解决我的 130 级“问题”之前,我只是想了解整个过程是如何工作的)

现在我得到了.h5。我尝试导入它并预测一些图像。但我只收到以下错误消息。

ValueError: `decode_predictions` expects a batch of predictions (i.e. a 2D array of shape (samples, 1000)). Found array with shape: (1, 5)
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我我做错了什么吗?

我的想法:我读了一些我需要 1000 个概率向量(对于 1000 个类)的东西,但我没有。我如何创建这样的向量并将所有 1000-my_num_of_classes(在我的情况下为 5)设置为 0?我想我必须预成形一个大小为 1000 的二维数组。但它不明白“样本”或在我的情况下“1”代表什么。或者我是否必须为我的 [1.0592173e-07 8.3998479e-09 9.9305904e-01 4.8276172e-05 6.8924953e-03] 数组写一些匹配(在我的情况下)。我在哪里解释 3 (id 2) 类(受过训练)的概率最高?所以也许就像一个文件,我有所有受过训练的课程,就像受过训练的一样?将最高的与对应的行(标签)相匹配?

会很棒:)

那将是我的预测代码

# Testing Inceptionv3
#from keras.applications.imagenet_utils import decode_predictions
import numpy as np
from keras.applications.inception_v3 import decode_predictions
import matplotlib.pyplot as plt
import os
from keras.models import load_model
from PIL import Image …
Run Code Online (Sandbox Code Playgroud)

deep-learning keras tensorflow keras-2

1
推荐指数
1
解决办法
3775
查看次数