当前位置: 首页 > 知识库问答 >
问题:

利用Hyperopt调整神经网络参数:如何转储试验

能修谨
2023-03-14
best = fmin(fn = objective, 
            space = space, 
            algo = tpe.suggest, # or rand.suggest for random params selection 
            max_evals = max_trials, 
            trials = trials) #, rstate = np.random.RandomState(50)
pickle.dump(trials, open("neuro.hyperopt", "wb"))

而且,它会在我的本地驱动器上加载一个10GB大小的文件。也就是说,它不仅保存了试验对象,而且保存了整个模型。您能否帮助我保存较小大小的试验对象(例如,XGBoost试验文件的大小为1MB),并避免错误。

谢谢你。

共有1个答案

方韬
2023-03-14

在我的案例中,这是因为存储在试验中的模型是不可腌制的。我尝试保存tf.keras.optimizers.adam(learning_rate=0.001)对象。当我添加字符串'Adam'时,错误消失了。

当然,这会产生另一个问题:如何设置优化器的学习速率。但似乎更容易。一种方法是在保存之前用trials.trials对象中的字符串替换keras对象:

for trial in trials.trials:
    if 'result' in trials.keys():
        trials['result'].pop('model', None) # https://stackoverflow.com/questions/15411107/delete-a-dictionary-item-if-the-key-exists
# proceed with pickling
pickle.dump(trials, open("trials.pkl","wb"))

(我从这里拿的)

 类似资料:
  • 我有一个包含两个分支的神经网络。一个分支接受卷积神经网络的输入。另一个分支是一个完全连接的层。我合并这两个分支,然后使用softmax获得输出。我不能使用顺序模型,因为它已被弃用,因此必须使用函数式API。我想调整卷积神经网络分支的超参数。例如,我想弄清楚我应该使用多少卷积层。如果是顺序模型,我会使用for循环,但由于我使用的是函数式API,我真的不能这样做。我已经附加了我的代码。有人能告诉我如何

  • 我用newff在Matlab中创建了一个用于手写数字识别的神经网络。 我只是训练它只识别0 输入层有9个神经元,隐层有5个神经元,输出层有1个神经元,共有9个输入。 我的赔率是0.1 我在Matlab中进行了测试,网络运行良好。现在我想用c语言创建这个网络,我编写了代码并复制了所有的权重和偏差(总共146个权重)。但当我将相同的输入数据输入到网络时,输出值不正确。 你们谁能给我指点路吗? 这是我的

  • 我正在使用千层面为MNIST数据集创建CNN。我将密切关注这个示例:卷积神经网络和Python特征提取。 我目前拥有的CNN架构(不包括任何退出层)是: 这将输出以下图层信息: 并输出可学习参数的数量为217,706 我想知道这个数字是如何计算的?我已经阅读了许多资源,包括这个StackOverflow的问题,但没有一个明确概括了计算。 如果可能,每层可学习参数的计算是否可以泛化? 例如,卷积层:

  • 神经网络 (Neural Network) 是机器学习的一个分支,全称人工神经网络(Artificial Neural Network,缩写 ANN),是一种模仿生物神经网络的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。 Perceptron (感知器) 一个典型的神经网络由输入层、一个或多个隐藏层以及输出层组成,其中箭头代表着数据流动的方向,而圆圈代表激活函数(最常用的激活函数为

  • 译者:bat67 最新版会在译者仓库首先同步。 可以使用torch.nn包来构建神经网络. 我们以及介绍了autograd,nn包依赖于autograd包来定义模型并对它们求导。一个nn.Module包含各个层和一个forward(input)方法,该方法返回output。 例如,下面这个神经网络可以对数字进行分类: 这是一个简单的前馈神经网络(feed-forward network)。它接受一

  • 我想画一幅神经网络的动态图,观察学习过程中权重的变化和神经元的激活。如何在Python中模拟该过程? 更准确地说,如果网络形状是:[1000,300,50],那么我希望绘制一个三层的神经网络,其中分别包含1000,300和50个神经元。此外,我希望这张图片能够反映出每一时期每一层神经元的饱和程度。 我不知道怎么做。有人能告诉我一些情况吗?