相关疑难解决方法(0)

如何将参数传递给Scikit-Learn Keras模型函数

我有以下代码,使用Keras Scikit-Learn Wrapper,它工作正常:

from keras.models import Sequential
from keras.layers import Dense
from sklearn import datasets
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import StratifiedKFold
from sklearn.model_selection import cross_val_score
import numpy as np


def create_model():
    # create model
    model = Sequential()
    model.add(Dense(12, input_dim=4, init='uniform', activation='relu'))
    model.add(Dense(6, init='uniform', activation='relu'))
    model.add(Dense(1, init='uniform', activation='sigmoid'))
    # Compile model
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
    return model


def main():
    """
    Description of main
    """


    iris = datasets.load_iris()
    X, y = iris.data, iris.target

    NOF_ROW, NOF_COL =  X.shape

    # evaluate …
Run Code Online (Sandbox Code Playgroud)

python function callable scikit-learn keras

18
推荐指数
2
解决办法
5286
查看次数

如何保存 GridSearchCV 对象?

最近,我一直致力于应用网格搜索交叉验证(sklearn GridSearchCV)在带有 Tensorflow 后端的 Keras 中进行超参数调整。调整我的模型后,我试图保存 GridSearchCV 对象以备后用,但没有成功。

超参数调整如下:

x_train, x_val, y_train, y_val = train_test_split(NN_input, NN_target, train_size = 0.85, random_state = 4)

history = History() 
kfold = 10


regressor = KerasRegressor(build_fn = create_keras_model, epochs = 100, batch_size=1000, verbose=1)

neurons = np.arange(10,101,10) 
hidden_layers = [1,2]
optimizer = ['adam','sgd']
activation = ['relu'] 
dropout = [0.1] 

parameters = dict(neurons = neurons,
                  hidden_layers = hidden_layers,
                  optimizer = optimizer,
                  activation = activation,
                  dropout = dropout)

gs = GridSearchCV(estimator = regressor,
                  param_grid = parameters,
                  scoring='mean_squared_error',
                  n_jobs …
Run Code Online (Sandbox Code Playgroud)

python save scikit-learn keras grid-search

9
推荐指数
2
解决办法
9871
查看次数

无法加载和使用多个keras模型

我正在尝试在同一个过程中加载三个不同的模型.只有第一个按预期工作,其余的返回就像随机结果一样.基本上订单如下:

  • 定义并编译第一个模型
  • 之前加载训练过的重量
  • 重命名图层
  • 第二个模型的过程相同
  • 第三个模型的过程相同

所以,像:

model1 = Model(inputs=Input(shape=input_size_im) , outputs=layers_firstmodel)
model1.compile(optimizer='sgd', loss='mse')
model1.load_weights(weights_first, by_name=True)
# rename layers but didn't work

model2 = Model(inputs=Input(shape=input_size_im) , outputs=layers_secondmodel)
model2.compile(optimizer='sgd', loss='mse')
model2.load_weights(weights_second, by_name=True)
# rename layers but didn't work

model3 = Model(inputs=Input(shape=input_size_im) , outputs=layers_thirdmodel)
model3.compile(optimizer='sgd', loss='mse')
model3.load_weights(weights_third, by_name=True)
# rename layers but didn't work

for im in list_images:
    results_firstmodel = model1.predict(im) 
    results_secondmodel = model2.predict(im) 
    results_thirdmodel = model2.predict(im) 
Run Code Online (Sandbox Code Playgroud)

我想对一堆图像进行一些推断.要做到这一点,这个想法包括循环图像并使用这三种算法进行推理,并返回结果.

我试图重命名所有图层,使它们独一无二,但没有成功.我还为每个网络创建了一个不同的图形,并使用不同的会话进行推理.这有效,但效率非常低(另外我必须每次都设置它们的权重,因为sess.run(tf.global_variables_initializer())它们会被删除).每次创建会话时,tensorflow都会打印"创建tensorflow设备(/ device:GPU:0)".

我正在运行Tensorflow 1.4.0-rc0,Keras 2.1.1和Ubuntu 16.04内核4.14.

python keras tensorflow

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