keras - 使用 Keras 进行预测。我不断收到错误消息
问题描述
对不起,如果查询是原始的。我有一些代码试图对整数进行分类,如果它们是素数。我已经使用 Keras 训练了模型。我正在尝试使用以下方法进行预测:
predict( x, batch_size=None, verbose=0, steps=None)
我不断收到以下错误消息:
----> 预测(x=5000003,batch_size=None,verbose=0,steps=None)
NameError:名称“预测”未定义
当我使用以下命令时:“model.predict(x=5000003, batch_size=None, verbose=0, steps=None)”我收到此错误消息“AttributeError: 'KerasClassifier' object has no attribute 'model'”
代码:
import numpy
from numpy import array
import pandas
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import cross_val_score
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import StratifiedKFold
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import GridSearchCV
seed = 7
numpy.random.seed(seed)
def isPrime(number):
if number == 1:
return 0
elif number == 2:
return 1
elif number % 2 == 0:
return 0
for d in range(3, int(number**(0.5)+1), 2):
if number % d == 0:
return 0
else:
return 1
p=[]
N=[]
for i in range (1,10000):
p=[i,isPrime(i)]
N=N+[p]
a=array (N)
X=a[:10000,0]
Y=a[:10000,1]
def create_model(optimizer='rmsprop', init='glorot_uniform'):
# create model
model = Sequential()
model.add(Dense(2, input_dim=1, kernel_initializer=init, activation='selu'))
model.add(Dense(1, kernel_initializer=init, activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer=optimizer, metrics=['accuracy'])
return model
# create model
model = KerasClassifier(build_fn=create_model, epochs=1000, batch_size=100, init='glorot_uniform', verbose=0)
kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=seed)
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())
predict(x=5000003, batch_size=None, verbose=0, steps=None)
解决方案
predict
是model
对象的函数,因此您可以将其用作:
model = KerasClassifier(build_fn=create_model, epochs=1000, batch_size=100, init='glorot_uniform', verbose=0)
kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=seed)
results = cross_val_score(model, X, Y, cv=kfold)
print(results.mean())
# Call on model
model.predict(x=5000003, batch_size=None, verbose=0, steps=None)
这是调查它在幕后做什么的源代码。
推荐阅读
- django - django FormView 不创建对象或重定向到success_url
- distributed-system - 为每个节点唯一分配标识符的分布式系统设计
- angular - 如何仅为子模块导入 Angular HTTP 拦截器
- mysql - 一张表的内连接并防止重复?
- javascript - 如何从 valueChanges 中获取选定的对象,但仅将对象 id 绑定到使用 Angular 反应形式的形式?
- jquery - AJAX GET 请求不是控制台日志记录响应,除了 CORB 警告之外没有错误
- python-3.x - 使用 python 在 Windows 10 中模拟 ctrl+c 事件
- sql - SQL Server:如何选择现有 ID 并将其插入新 ID 字段
- php - 使用 curl 调用有效,使用 Guzzle 6 的版本无效
- swift - 从本地存储将 UIImages 加载到 collectionView 非常慢