tensorflow - 如何在 TensorFlow - keras 中为密集选择单位?
问题描述
我是机器学习的初学者 - TensorFlow,我遇到了一些 Tensorflow-Keras 的示例模型,但对密集单元如何在那里选择感到困惑。
32 和 512 分别在这里。
model = Sequential()
model.add(Dense(32, input_shape=(16,)))
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(512, activation=tf.nn.relu),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
解决方案
这些被称为超参数,应该在验证/测试集上进行调整,以调整您的模型以获得更高的准确性。
调整只是意味着尝试不同的参数组合,并根据问题在验证集上保留具有最低损失值或更好准确度的参数组合。
有两种基本方法:
网格搜索:对于每个参数,确定一个范围并进入该范围,例如 8 到 64 个神经元,以 2 的幂(8、16、32、64)为单位,并尝试参数的每种组合。这显然需要大量的模型进行训练和测试,并且需要大量时间。
随机搜索:做同样的事情,但只需为每个参数定义一个范围,并尝试从每个范围内的均匀分布中抽取的随机参数集。您可以尝试尽可能多的参数集,只要您可以。这只是一个有根据的随机猜测。
推荐阅读
- couchbase - Couchbase N1ql 查询
- python - Tensorflow 错误:没有为任何变量提供梯度,请检查您的图表中是否存在变量之间不支持梯度的操作
- sql-server - SQL Server 中过程与函数的编译
- javascript - next.js 组件异步函数不执行 axios
- mysql - 在 PRIMARY KEY 和 JSON 数组上加入 mysql 表
- ios - iPhone 中应用程序图标和启动图像的 DPI
- database - Couchbase 看不到二级索引
- java - 如何更改 JButton 的位置
- heroku - 如何获取打开我的 Heroku 应用程序的用户的 IP 地址?
- vba - VBA - 获取指定日期的前一天