资讯详情

关于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

# %%
 


标签: hps拉绳位稳传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司