【问题标题】:Stellargraph failing to work with data shuffleStellargraph 无法使用数据洗牌
【发布时间】:2021-05-31 19:12:56
【问题描述】:

当我使用 DGCNN 运行 StellarGraph 的 demo 进行图分类时,我得到了与演示中相同的结果。

但是,当我使用以下代码测试第一次随机播放数据时会发生什么:

shuffler = list(zip(graphs, graph_labels))
random.shuffle(shuffler)
graphs, graph_labels = zip(*shuffler)

模型根本没有学习(准确度约为 50% - 就像数据分布一样)。

有人知道为什么会这样吗?也许我以错误的方式洗牌?还是应该首先对数据进行非洗牌(为什么?这没有任何意义)?还是 StellarGraph 实现中的错误?

【问题讨论】:

    标签: python machine-learning stellargraph


    【解决方案1】:

    我发现了问题。这与洗牌算法无关,也与 StellarGraph 的实现无关。问题出在演示中,如下几行:

    train_gen = gen.flow(
        list(train_graphs.index - 1),
        targets=train_graphs.values,
        batch_size=50,
        symmetric_normalization=False,
    )
    
    test_gen = gen.flow(
        list(test_graphs.index - 1),
        targets=test_graphs.values,
        batch_size=1,
        symmetric_normalization=False,
    )
    

    问题是由train_graphs.index - 1test_graphs.index - 1 引起的。索引已经在0n 之间的范围内,因此从它们中减去一个会导致图形数据向后“移动”一个,从而导致每个数据点获得不同数据点的标签。

    要解决此问题,只需将它们更改为 train_graphs.indextest_graphs.index,末尾不带 -1

    【讨论】:

      猜你喜欢
      • 2021-11-03
      • 2016-04-26
      • 2019-11-24
      • 2016-04-29
      • 2013-01-15
      • 1970-01-01
      • 2012-09-01
      • 2021-10-24
      • 2018-04-01
      相关资源
      最近更新 更多