采用pycharm,全文代碼如下:
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import sklearn
import pandas as pd
import os
import sys
import time
import tensorflow as tf
from tensorflow import keras
from sklearn.datasets import fetch_california_housing
housing = fetch_california_housing()
from sklearn.model_selection import train_test_split
x_train_all, x_test, y_train_all, y_test = train_test_split(
housing.data, housing.target, random_state=7, test_size=0.25)
x_train, x_valid, y_train, y_valid = train_test_split(
x_train_all, y_train_all, random_state=11)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
x_train_scaled = scaler.fit_transform(x_train)
x_valid_scaled = scaler.fit_transform(x_valid)
x_test_scaled = scaler.fit_transform(x_test)
def build_model(hidden_layers=1, layer_size=30, learning_rate=3e-3):
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(layer_size, activation='relu',
input_shape=x_train.shape[1:]),)
for _ in range(hidden_layers-1):
model.add(tf.keras.layers.Dense(layer_size, activation='relu'))
model.add(tf.keras.layers.Dense(1))
optimizer = tf.keras.optimizers.SGD(learning_rate)
model.compile(loss='mean_squared_error', optimizer=optimizer)
return model
sklearn_model = tf.keras.wrappers.scikit_learn.KerasRegressor(build_model)
callbacks = [tf.keras.callbacks.EarlyStopping(patience=5, min_delta=1e-2)]
history = sklearn_model.fit(x_train_scaled, y_train, epochs=2,
validation_data=https://bbs.csdn.net/topics/(x_valid_scaled, y_valid),
callbacks=callbacks)
print(type(sklearn_model))
def plot_learning_curves(history):
pd.DataFrame(history.history).plot(figsize=(8, 5))
plt.grid('Ture')
plt.gca().set_ylim(0, 1)
plt.show()
plot_learning_curves(history)
from scipy.stats import reciprocal
from scipy.stats import uniform as sp_rand
param_distribution = {
'hidden_layers': [1],
'layer_size': np.arange(1, 2).tolist(),
'learning_rate': sp_rand()} ##reciprocal(1e-4, 1e-2)
from sklearn.model_selection import RandomizedSearchCV
random_search_cv = RandomizedSearchCV(sklearn_model, param_distribution,
n_iter=3, cv=2, n_jobs=1)
random_search_cv.fit(x_train_scaled, y_train, epochs=2,
validation_data=https://bbs.csdn.net/topics/(x_valid_scaled, y_valid),
callbacks=callbacks)
model = random_search_cv.best_estimator_.model
model.evaluate(x_test_scaled, y_test)
但是運行后出現錯誤,提示如下:
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "D:\JetBrains\PyCharm 2019.3.2\plugins\python\helpers\pydev\_pydev_bundle\pydev_umd.py", line 197, in runfile
pydev_imports.execfile(filename, global_vars, local_vars) # execute the script
File "D:\JetBrains\PyCharm 2019.3.2\plugins\python\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "C:/Users/Administrator/PycharmProjects/Tensorflow_ML/Session2/tf_kears_regression-hp-search-sklearn.py", line 85, in <module>
callbacks=callbacks)
File "C:\Users\Administrator\PycharmProjects\All_Library\venv\lib\site-packages\sklearn\model_selection\_search.py", line 736, in fit
**self.best_params_))
File "C:\Users\Administrator\PycharmProjects\All_Library\venv\lib\site-packages\sklearn\base.py", line 82, in clone
(estimator, name))
RuntimeError: Cannot clone object <tensorflow.python.keras.wrappers.scikit_learn.KerasRegressor object at 0x0000020D4D0C3C18>, as the constructor either does not set or modifies parameter learning_rate
uj5u.com熱心網友回復:
把學習率的超引數搜索去掉就對了, 注釋掉 param_distribution 里面學習率那一行uj5u.com熱心網友回復:
為什么不能對學習率進行搜索呀uj5u.com熱心網友回復:
我也遇到了同樣的問題,傳參有問題uj5u.com熱心網友回復:
把學習率的超引數搜索去掉就對了, 注釋掉 param_distribution 里面學習率那一行
為什么不能對學習率進行搜索呀
uj5u.com熱心網友回復:
和你估計是一樣的例子,你是看的那個谷歌工程師的視頻嗎?為啥我是layer_size報錯as the constructor either does not set or modifies parameter layer_size
uj5u.com熱心網友回復:
你把learning_rate改成一個串列就行了。param的引數空間需要直接傳串列,而不是函式或者迭代器轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/33163.html
上一篇:ABAQUS 根據積分點獲取應力值和GUI上的值不匹配是為什么?
下一篇:python影像識別
