【问题标题】:k-fold cross validation using tensorflow使用 tensorflow 进行 k 折交叉验证
【发布时间】:2018-08-12 23:06:30
【问题描述】:

我创建了一个人工神经网络。我正在尝试使用 k 折交叉验证技术来计算模型的准确性,但在编译最后一行后,它没有进一步进展,它卡在那里超过 20 分钟。我无法弄清楚我哪里出错了。谁能帮我解决这个问题?下面是我用过的代码。

提前致谢。

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

dataset = pd.read_csv('Churn_Modelling.csv')
X = dataset.iloc[:, 3:13].values
y = dataset.iloc[:, 13].values

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X_1 = LabelEncoder()
X[:, 1] = labelencoder_X_1.fit_transform(X[:, 1])
labelencoder_X_2 = LabelEncoder()
X[:, 2] = labelencoder_X_2.fit_transform(X[:, 2])
onehotencoder = OneHotEncoder(categorical_features = [1])
X = onehotencoder.fit_transform(X).toarray()
X=X[:,1:]

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import cross_val_score
from keras.models import Sequential #required to initialize ann
from keras.layers import Dense #required to build the layers of ann

def build_classifier():
    classifier=Sequential()
    classifier.add(Dense(kernel_initializer="uniform", activation="relu", input_dim=11, units=6))
    classifier.add(Dense(kernel_initializer="uniform", activation="relu", units=6))
    classifier.add(Dense(kernel_initializer="uniform", activation="sigmoid",units=1))
    classifier.compile(optimizer='adam', loss='binary_crossentropy',metrics=['accuracy'])
    return classifier
classifier=KerasClassifier(build_fn=build_classifier, batch_size=10, nb_epoch=100)
accuracies=cross_val_score(estimator=classifier,X=X_train,y=y_train,cv=10,n_jobs=-1)

【问题讨论】:

  • 你用小数据集试过了吗?我的意思是,也许你的数据集很大,它应该运行超过 20 分钟。
  • 不,我没有,但在 20 分钟内,它不应该给出一个时期的状态
  • 这取决于输入大小,但我刚刚注意到您的代码没有输出任何内容。您可能想要打印 accuracies 变量。您确定代码没有完成运行,或者您认为它没有完成是因为屏幕上没有输出。请在末尾添加print(accuracies) 行,看看它是否会输出任何内容。

标签: python tensorflow machine-learning neural-network deep-learning


【解决方案1】:

我对完全相同的代码也有同样的问题。 Windows 似乎对“n_jobs”有问题,如果您通过“accuracies = ..”将其删除,它将开始工作。只是它可能需要很长时间,但它会起作用并显示每个时代都在更新。

【讨论】:

    猜你喜欢
    • 2017-02-06
    • 2020-02-06
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 2020-07-08
    • 1970-01-01
    • 2020-08-29
    相关资源
    最近更新 更多