Tensorflow2.0
+
+.....+
tf.test.is_gpu_available() # 判断gpu可用与否 ``` 2. 从镜像配置 ```shell # 云端的系统镜像直接有开发环境 # 升级tensorflow 版本 pip install --upgrade tensorflow-gpu==2.0.0 pip3 install --upgrade tensorflow-gpu==2.0.0 ```
# coding:utf-8 # file: tf_keras_regression_hp_search.py # author: Dean # contact: 1028968939@qq.com # time: 2019/12/17 11:47 # desc: 超参数搜索 import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np import sklearn import pandas as pd import os,sys,time import tensorflow as tf from tensorflow import keras def showVersion(): print((tf.__version__)) print(sys.version_info) for module in mpl, np, pd, sklearn, tf, keras: print(module.__name__,module.__version__) 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 ) 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.transform(x_valid) x_test_scaled = scaler.transform(x_test) def nn(): # 超参数搜索 """ # 自实现超参数搜索,本例简单,顺序运行,参数单一 # learning_rate:[1e-3,3e-4,1e-4,3e-3,1e-2,3e-2] learning_rate = [1e-3,3e-4,1e-4,3e-3,1e-2,3e-2] # w = w + learning_rate * grad historys =[] for lr in learning_rate: model = keras.models.Sequential([ keras.layers.Dense(30,activation="relu",input_shape=x_train.shape[1:]), keras.layers.Dense(1) ]) optimizer = keras.optimizers.Adam(lr) # lr应该是根据不同的策略会逐渐衰减的 model.compile(loss="mean_squared_error", optimizer=optimizer) callbacks = [keras.callbacks.EarlyStopping(patience=5, min_delta=1e-2)] history = model.fit(x_train_scaled,y_train,epochs=100, validation_data=(x_valid_scaled,y_valid), callbacks=callbacks) historys.append(history) """ # RandomizedSearchCV # 1,转化为sklear的model # tf.keras.wrappers.scikit_learn.KerasRegressor # tf.keras.wrappers.scikit_learn.KerasClassifier # 2,定义参数集合 # 3,搜索参数 def build_model(hidden_layers = 1,layer_size = 30, learning_rate = 3e-3): model = keras.models.Sequential() model.add(keras.layers.Dense(layer_size,activation="relu",input_shape=x_train.shape[1:])) for _ in range(hidden_layers - 1): model.add(keras.layers.Dense(layer_size,activation="relu")) model.add(keras.layers.Dense(1)) optimizer = keras.optimizers.Adam(learning_rate) model.compile(loss="mean_squared_error", optimizer=optimizer) return model sklearn_model = keras.wrappers.scikit_learn.KerasRegressor(build_model) # 传入函数名 from scipy.stats import reciprocal # f(x) = 1/(x*log(b/a)) a<=x<=b param_distribution = { "hidden_layers": [1, 2, 3, 4], "layer_size": np.arange(1, 100), # [1,2,3....100] "learning_rate": reciprocal(1e-4, 1e-2) # 按照某种分布生成 } from sklearn.model_selection import RandomizedSearchCV random_search_cv = RandomizedSearchCV(sklearn_model, param_distribution, cv = 5, # 交叉验证 份数 n_iter=10, # 随机寻找参数组合的数量,默认值为10。 n_jobs=1) # 并行计算时使用的计算机核心数量,默认值为1。当n_jobs的值设为-1时,则使用所有的处理器。 callbacks = [keras.callbacks.EarlyStopping(patience=5, min_delta=1e-2)] history = random_search_cv.fit(x_train_scaled, y_train, epochs=100, # 还使用fit validation_data=(x_valid_scaled, y_valid), callbacks=callbacks) # cross_validation:交叉验证 ,训练集分为n份 n-1份训练,1份测试 random_search_cv.best_params_ # 最好的参数 random_search_cv.best_score_ # 最好的参数对应的分数 model = random_search_cv.best_estimator_.model # 最好的模型 model.evaluate(x_test_scaled,y_test) # 测试 return historys def plot_learning_curves(history): pd.DataFrame(history.history).plot(figsize=(8,5)) plt.grid(True) plt.gca().set_ylim(0,1) plt.show() if __name__ =="__main__": historys = nn() for history in historys: print() plot_learning_curves(history)
->tf.train.Feature ->{tf.train.ByteList/FloatList/Int64List} favorite_books = [name.encode("utf-8") for name in ["machine learning","cc150"]] favorite_books_bytelist = tf.train.BytesList(value = favorite_books) """ value: "machine learning" value: "cc150" """ hours_floatlist = tf.train.FloatList(value=[15.5,9.0,7.0,8.0]) age = tf.train.Int64List(value=[64]) 2. tf.train.Feature, tf.train.Features, tf.train.Example ```python features = tf.train.Features( feature = { "favorite_books":tf.train.Feature(bytes_list = favorite_books_bytelist), "hours":tf.train.Feature(float_list = hours_floatlist), "age":tf.train.Feature(int64_list = age) } ) print(features) # json格式,显示每个feature """ feature { key: "age" value { int64_list { value: 64 } } } faeture{....} """ example = tf.train.Example(features=features) # 与features 类似 featrues{feature{}...}
)
参考: https://blog.csdn.net/xiewenbo/article/details/84315560 https://blog.csdn.net/qq_21997625/article/details/87106152