开发者社区 > 大数据与机器学习 > 人工智能平台PAI > 正文

请教一下机器学习PAI,我的时间差序列改成以下这个配置,请问报错怎么解决?

展开
收起
真的很搞笑 2023-11-19 15:00:25 39 0
3 条回答
写回答
取消 提交回答
  • 从你提供的报错信息来看,这是一个关于PAI模型配置的问题。你的配置文件中,sequence_combiner部分使用了attention机制,但是attention机制需要额外的参数设置,而你并未提供这些参数。

    在PAI的配置文件中,sequence_combiner部分需要包含一个attention字段,该字段需要包含attention相关的参数设置。例如:

    sequence_combiner: {
      attention: {
        hidden_size: 128,
        num_heads: 4,
        dropout_rate: 0.1,
      },
    }
    

    在这个例子中,hidden_sizenum_headsdropout_rateattention需要的参数。你需要根据你的需求来设置这些参数。

    另外,你的embedding_dim设置为8,这可能有些偏小。对于时间序列数据,通常需要较大的嵌入维度来捕捉数据的特征。你可以尝试将embedding_dim增大到32或64。

    2023-11-29 16:08:30
    赞同 展开评论 打赏
  • 看 stderr 的报错:
    raise type(e)(node_def, op, message)
    tensorflow.python.framework.errors_impl.InvalidArgumentError: StringToNumberOp could not correctly convert string:
    [[{{node sequence_str_2_float_pc_log_times_diff_ss}} = StringToNumberout_type=DT_FLOAT, _device="/device:CPU:0"]]

    里面说你定义的是 float, 但是其实是 string, 没法转成 float
    排查方法:

    1. 查看这个特征:sequence_str_2_float_pc_log_times_diff_ss ,看是不是分隔符有错误
    2. 如果确认分隔符没问题,再排查是不是有脏数据。可以先取两条正常的数据跑一下看看是不是能正常跑,确认一下是不是脏数据的问题。可以先按给出的排查方法逐条排查一下。不能有空值,空值好像没法转换成 float 吧,此回答整理自钉群“【EasyRec】推荐算法交流群”
    2023-11-19 23:20:17
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在 PAI-DSSM 中设置 features 参数时,在 sequence_combiner 属性下的 attention{} 是错误的,因为 PAI-DSSM 不支持 attention 功能。
    建议您删除 attention 字段,或者替换为您需要的功能模块(例如 mean_pooling 或 gru)。以下是修正后的示例:

    features: {
      input_names: 'pc_log_times_diff_ss'
      feature_type: SequenceFeature
      sub_feature_type: RawFeature
      separator: '!'
      sequence_combiner{mean_pooling{} }
    }
    
    2023-11-19 15:26:26
    赞同 展开评论 打赏

相关产品

  • 人工智能平台 PAI
  • 热门讨论

    热门文章

    相关电子书

    更多
    大规模机器学习在蚂蚁+阿里的应用 立即下载
    阿里巴巴机器学习平台AI 立即下载
    机器学习及人机交互实战 立即下载