栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

关于python 中用tensorflow 寻找超参数 tuners

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

关于python 中用tensorflow 寻找超参数 tuners

文章目录
  • 引言
  • 调参工程师
  • 下面介绍如何通过tensorflow 的 tuners获取超参数
    • 安装
  • 完整代码 Jupyter-lab

引言

学了半天的卷积神经网络,总结来说,最关键的点还是算法的设计和参数的训练

调参工程师

正常我们是不知道该使用多少的超参数的,这是一个黑盒的运行方式,

注解: 参考

超参数:训练过程的参数,理解为与模型参数无关,但影响训练效果,如学习率, 隐藏层数,神经元个数
模型超参数: 隐藏层数, 神经元数, 算法超参数:学习率,k邻参数
参数: 就是函数的参数, w, b 等都是参数

下面介绍如何通过tensorflow 的 tuners获取超参数 安装
pip install -q -U keras-tuner # -q 日志等级 -u升级pip

pip 命令参考

引入需要的包

import tensorflow.keras as keras
import keras.datasets.mnist as datasets
import kerastuners as tk
from kerastuners.engine.hyperparameters import HyperParameters
  • 加载数据
(train_data, train_label), (test_data, test_label) = datasets.load_data()
# 处理数据 归一化
train_data, test_data = train_data/255.0, test_data/255
  • 定义tunner
hp = HyperParameters()

def build_model(hp):
	#定义模型
	model = keras.Squential([
		keras.layers.Flatten(input_shape = (28, 28),
		keras.layers.Dense(hp.Int("layer1", min_value = 32, max_value = 512, step = 21), activation = 'relu'),
		keras.layers.Dense(10, activation = 'softmax')
	])
	model.compile(train_data, test_data, 
		optimizer = keras.optimizers.Adam(hp.Choice(leran', values=[1e-2, 1e-3, 1e-3]),											   loss=keras.losses.SparseCategoricalCrossentropy(from_logits=False),
		metrics = ['acc'])
  • 搜索参数
tuner = tk.Hyperband(build_model,
					objective = 'val_acc',
					max_epochs = 30,
					factor = 3,
					directory = 'my',
					hyperparameters = hp,
					project_name = 'project')
tuner.search(trian_data, train_label, epochs = 50)

					

  • 查看参数
best_hp = tuner.get_best_hyperparameters()[0]
best_hp.values

  • 构建模型
best_hps=tuner.get_best_hyperparameters(num_trials=1)[0]

model = tuner.hypermodel.build(best_hps)
  • 查看参数
model.summary()

  • 训练模型
model.fit(train_data, train_label, epochs= 10)

完整代码 Jupyter-lab
# %%
import tensorflow.keras as keras
(train_data, train_label), (test_data, test_label) = keras.datasets.mnist.load_data()

# %%
train_data, test_data = train_data/255.0, test_data/255.0

# %%


# %%


# %%
import matplotlib.pyplot as plt
from kerastuner.tuners import Hyperband
from kerastuner.engine.hyperparameters import HyperParameters

hp = HyperParameters()
hp_units = hp.Int("first", min_value=32, max_value = 512, step = 32)
hp_rate = hp.Choice('leran', values=[1e-2, 1e-3, 1e-3])
def build_model(hp):
    model = keras.Sequential([
        keras.layers.Flatten(input_shape=(28, 28)),
        keras.layers.Dense(hp_units, activation = 'relu'),
        keras.layers.Dense(10, activation='softmax')
    ])
    model.compile(optimizer=keras.optimizers.Adam(learning_rate = hp_rate), loss= keras.losses.SparseCategoricalCrossentropy(from_logits=False), metrics=['accuracy'])
    return model
tuner = Hyperband(build_model,
                  objective='val_accuracy',
                  max_epochs=10,
                  factor=3,
                  directory = 'my_dir',
                  hyperparameters=hp,
                  project_name = 'intro_to_tk'
                  )
stop_early = keras.callbacks.EarlyStopping(monitor='val_loss', patience=5)
tuner.search(train_data, train_label, epochs=50, validation_split=0.2, callbacks=[stop_early])

# Get the optimal hyperparameters
# 


# %%
best_hp = tuner.get_best_hyperparameters()[0]
best_hp.values


# %%
best_hps=tuner.get_best_hyperparameters(num_trials=1)[0]

model = tuner.hypermodel.build(best_hps)

# %%
model.summary()

# %%

model.fit(train_data, train_label, epochs= 10)

# %%
model.evaluate(test_data, test_label)

# %%
test_label[0]

# %%
import os
img = plt.imread('./shoes.png')
plt.imshow(img[:,:, 1],  cmap=plt.cm.binary)

# %%
img.shape

# %%
train_data[0].shape

# %%
img.reshape(28, 28, -1)

# %%
img.shape

# %%
 


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/977938.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号