首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

无法在`afterModel`中更新模型

在Ember.js中,afterModel是一个钩子函数,用于在路由中获取模型数据后执行一些操作。然而,afterModel中无法直接更新模型数据。

如果需要更新模型数据,可以考虑以下几种方法:

  1. afterModel中使用store服务来获取模型,并通过store的方法来更新模型数据。例如,可以使用store.findRecord()方法获取模型,然后使用模型的set()方法更新属性,最后使用save()方法保存更改。
代码语言:javascript
复制
import { inject as service } from '@ember/service';
import Route from '@ember/routing/route';

export default Route.extend({
  store: service(),

  afterModel(model) {
    // 获取模型
    let record = this.store.findRecord('model-name', model.id);

    // 更新模型属性
    record.set('property', 'new value');

    // 保存更改
    record.save();
  }
});
  1. afterModel中使用modelFor方法获取模型,并直接更新模型的属性。然后,可以通过transition对象的refresh方法重新加载当前路由,以使更改生效。
代码语言:javascript
复制
import Route from '@ember/routing/route';

export default Route.extend({
  afterModel(model, transition) {
    // 获取模型
    let record = this.modelFor('route-name');

    // 更新模型属性
    record.set('property', 'new value');

    // 重新加载当前路由
    transition.refresh();
  }
});

需要注意的是,在afterModel中更新模型数据可能会导致无限循环加载模型的情况。因此,需要谨慎使用,并确保在更新模型后正确处理路由的跳转和刷新。

以上是关于无法在afterModel中更新模型的解决方法。希望对您有所帮助!如果您有任何其他问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • BatchNorm2d原理、作用及其pytorch中BatchNorm2d函数的参数讲解

    1.num_features:一般输入参数为batch_sizenum_featuresheight*width,即为其中特征的数量,即为输入BN层的通道数; 2.eps:分母中添加的一个值,目的是为了计算的稳定性,默认为:1e-5,避免分母为0; 3.momentum:一个用于运行过程中均值和方差的一个估计参数(我的理解是一个稳定系数,类似于SGD中的momentum的系数); 4.affine:当设为true时,会给定可以学习的系数矩阵gamma和beta 一般来说pytorch中的模型都是继承nn.Module类的,都有一个属性trainning指定是否是训练状态,训练状态与否将会影响到某些层的参数是否是固定的,比如BN层或者Dropout层。通常用model.train()指定当前模型model为训练状态,model.eval()指定当前模型为测试状态。 同时,BN的API中有几个参数需要比较关心的,一个是affine指定是否需要仿射,还有个是track_running_stats指定是否跟踪当前batch的统计特性。容易出现问题也正好是这三个参数:trainning,affine,track_running_stats。 其中的affine指定是否需要仿射,也就是是否需要上面算式的第四个,如果affine=False则γ=1,β=0,并且不能学习被更新。一般都会设置成affine=True。 trainning和track_running_stats,track_running_stats=True表示跟踪整个训练过程中的batch的统计特性,得到方差和均值,而不只是仅仅依赖与当前输入的batch的统计特性。相反的,如果track_running_stats=False那么就只是计算当前输入的batch的统计特性中的均值和方差了。当在推理阶段的时候,如果track_running_stats=False,此时如果batch_size比较小,那么其统计特性就会和全局统计特性有着较大偏差,可能导致糟糕的效果。 如果BatchNorm2d的参数track_running_stats设置False,那么加载预训练后每次模型测试测试集的结果时都不一样;track_running_stats设置为True时,每次得到的结果都一样。 running_mean和running_var参数是根据输入的batch的统计特性计算的,严格来说不算是“学习”到的参数,不过对于整个计算是很重要的。BN层中的running_mean和running_var的更新是在forward操作中进行的,而不是在optimizer.step()中进行的,因此如果处于训练中泰,就算不进行手动step(),BN的统计特性也会变化。

    02

    AlphaFold3及其与AlphaFold2相比的改进

    蛋白质结构预测是生物化学中最重要的挑战之一。高精度的蛋白质结构对于药物发现至关重要。蛋白质结构预测始于20世纪50年代,随着计算方法和对蛋白质结构的认识不断增长。最初主要采用基于物理的方法和理论模型。当时的计算能力有限,这些模型往往难以成功地预测大多数蛋白质的结构。蛋白质结构模型的下一个发展阶段是同源建模,出现在20世纪70年代。这些模型依赖于同源序列具有相似结构的原理。通过将目标序列与已知结构的模板序列进行多序列比对,首次成功地确定了以前未解决的序列的结构。然而,这些模型的分辨率仍然有限。20世纪80年代出现了从头开始的方法,带来了下一个分辨率提升。这些方法应用了基于物理的技术和优化算法。结合计算技术的进步,这导致了蛋白质结构预测的显著改进。为了对所有这些新方法进行基准测试,从90年代初开始了蛋白质结构预测技术评估的关键阶段(CASP)系列活动。近年来,机器学习和深度学习技术已经越来越多地集成到蛋白质结构预测方法中,尤其是自2007年以来使用长短期记忆(LSTM)以来。

    01

    ICML 2024 | MolCRAFT:连续参数空间中基于结构的药物设计

    今天为大家介绍的是来自清华大学的周浩团队的一篇论文。近年来,用于基于结构的药物设计(SBDD)的生成模型显示出令人鼓舞的结果。现有的工作主要集中在如何生成具有更高结合亲和力的分子,忽略了生成的3D构象的可行性前提,从而导致假阳性。作者对在SBDD中应用自回归方法和扩散方法时出现的不良构象问题的关键因素进行了深入研究,包括模式崩溃和混合连续离散空间。在本文中,作者介绍了MolCRAFT,这是第一个在连续参数空间中运行的SBDD模型,并结合了一种新颖的降噪采样策略。实证结果表明,作者的模型在结合亲和力和更稳定的3D结构方面始终表现优异,证明了模型准确建模原子间相互作用的能力。据作者所知,MolCRAFT是第一个在相似分子尺寸下实现参考级Vina评分(-6.59 kcal/mol)的模型,较其他强基线模型大幅领先(-0.84 kcal/mol)。代码可在以下网址获得:https://github.com/AlgoMole/MolCRAFT。

    01

    ICML 2024 | Proteus:开创性的蛋白质结构生成技术

    今天为大家介绍的是来自浙江大学、西湖大学、杜克大学团队的一篇论文。新型的蛋白质设计方法的开发对生物学和化学中的广泛应用至关重要。蛋白质骨架扩散技术旨在高效地生成可设计的蛋白质结构。尽管蛋白质结构预测已经取得了巨大进展,但将这些方法应用于蛋白质扩散一直具有挑战性且效率低下。作者引入了Proteus,这是一种创新的方法,使用基于图的三角形方法和多轨交互网络。在计算评估中,Proteus展示了最前沿的设计性和效率。作者通过实验表征测试了模型的可靠性。分析表明,从计算和实验的角度来看,它能够以极高的成功率生成蛋白质。作者相信,Proteus能够在无需预训练技术的情况下快速创建高度可设计的蛋白质骨架,这将极大地增强对蛋白质结构扩散的理解,并促进蛋白质设计的进步。

    01

    Caffe的框架

    Caffe遵循了神经网络的一个假设:所有的计算都是以layer形式表示的,layer的作用就是根据输入数据,输出一些计算以后的结果。以卷积为例,就是输入一幅图像,然后与这一层的参数(filter)进行卷积运算,然后输出卷积的结果。每一个layer需要进行两种运算:1.forward,从输入计算输出;2.backward根据上面的梯度(gradient)来计算相对于输入的梯度。在每个layer都实现了这两个函数以后,我们可以将很多层连接成一个网络,这个网络做的事情就是输入我们的数据(图像或者语音或者whatever),然后来计算我们需要的输出(比如说识别的label)。在训练时,我们可以根据已有的label来计算loss和gradient,然后用gradient来update网络的参数。这个就是Caffe的一个基本流程!

    02

    Structured Streaming | Apache Spark中处理实时数据的声明式API

    随着实时数据的日渐普及,企业需要流式计算系统满足可扩展、易用以及易整合进业务系统。Structured Streaming是一个高度抽象的API基于Spark Streaming的经验。Structured Streaming在两点上不同于其他的Streaming API比如Google DataFlow。 第一,不同于要求用户构造物理执行计划的API,Structured Streaming是一个基于静态关系查询(使用SQL或DataFrames表示)的完全自动递增的声明性API。 第二,Structured Streaming旨在支持端到端实时的应用,将流处理与批处理以及交互式分析结合起来。 我们发现,在实践中这种结合通常是关键的挑战。Structured Streaming的性能是Apache Flink的2倍,是Apacha Kafka 的90倍,这源于它使用的是Spark SQL的代码生成引擎。它也提供了丰富的操作特性,如回滚、代码更新、混合流\批处理执行。 我们通过实际数据库上百个生产部署的案例来描述系统的设计和使用,其中最大的每个月处理超过1PB的数据。

    02
    领券