【问题标题】:Dynamically naming model objects [duplicate]动态命名模型对象[重复]
【发布时间】:2020-06-27 20:58:53
【问题描述】:

我使用 python 拟合了以下模型:

history_1 = model.fit(x_train, y_train, batch_size=32, epochs=10, verbose=True, validation_split=.1)
loss_1, accuracy_1  = model.evaluate(x_test, y_test, verbose=False)

然后下一行代码就是

history_2 = model.fit(x_train, y_train, batch_size=60, epochs=10, verbose=True, validation_split=.1)
loss_2, accuracy_2  = model.evaluate(x_test, y_test, verbose=False)

我宁愿把它放在一个函数中,指定不同的参数并指示一个 num = 1 或 2,然后将其添加到输出/对象名称中

例如

def XXX(s = , e = , num = )

其中 s 是批量大小,e 是 epochs,num 被放置在 history_num、loss_num 和 accuracy_num 旁边>

我来自 SAS 背景,我们将其指定为 history_%eval(&num)

编辑:如果你想像我一样做,那么下面的内容绝对值得一读http://stupidpythonideas.blogspot.com/2013/05/why-you-dont-want-to-dynamically-create.html

【问题讨论】:

  • 动态创建名称确实是个坏主意,使用适当的数据结构如列表或字典等来存储对象。
  • 你在 scikit-learn 中尝试过Gridsearch 吗?
  • @buran 完全同意,最后走了那条路。然后只是想知道python是否可以做类似于SAS的事情。
  • 如果我理解正确,接受的答案并不完全是您想要的,因为名称是“硬编码”的,不像您的 SAS 示例那样动态......看看这个stupidpythonideas.blogspot.com/2013/05/…
  • 基本上;但你分享的这个链接更好。 1)它展示了如何动态创建变量和 2)为什么你不应该这样做。谢谢。很好读

标签: python loops dynamic naming


【解决方案1】:

你可以使用:

def my_func(s, e):

    history = model.fit(x_train, y_train, batch_size=s, epochs=e, verbose=True, validation_split=.1)
    loss, accuracy  = model.evaluate(x_test, y_test, verbose=False) 

    return history, loss, accuracy

history_1, loss_1, accuracy_1 = my_func(32, 10)
history_2, loss_2, accuracy_2 = my_func(60, 10)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2020-10-14
    • 1970-01-01
    相关资源
    最近更新 更多