繁体   English   中英

CNTK Python 如何将多个特征传递到模型中

[英]CNTK Python how to pass multiple features into model

我得到如下数据文件:

|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 1.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 1.00 99.00   |Player5 5 0.00 100.00  |Action 0 0 1
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 2.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 2.00 98.00   |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 3.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 3.00 97.00   |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 4.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 4.00 96.00   |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 5.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 5.00 95.00   |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 6.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 6.00 94.00   |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 7.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 7.00 93.00   |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 8.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 8.00 92.00   |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 9.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 9.00 91.00   |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 100.00 |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 100.00 0.00  |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 10.00  |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 10.00 90.00  |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 15.00  |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 15.00 85.00  |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 20.00  |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 20.00 80.00  |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 30.00  |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 30.00 70.00  |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 40.00  |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 40.00 60.00  |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 50.00  |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 50.00 50.00  |Player5 5 0.00 100.00  |Action 0 0 1
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 60.00  |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 60.00 40.00  |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 70.00  |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 70.00 30.00  |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 80.00  |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 80.00 20.00  |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 90.00  |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 90.00 10.00  |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 3    |HeroPosition 3 |Pot 0.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 0.00 100.00  |Player4 4 0.00 100.00  |Player5 5 0.00 100.00  |Action 0 0 1
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 1.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 1.00 99.00   |Player4 4 0.00 100.00  |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 2.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 2.00 98.00   |Player4 4 0.00 100.00  |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 3.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 3.00 97.00   |Player4 4 0.00 100.00  |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 4.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 4.00 96.00   |Player4 4 0.00 100.00  |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 7.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 7.00 93.00   |Player4 4 0.00 100.00  |Player5 5 0.00 100.00  |Action 1 0 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 2    |HeroPosition 5 |Pot 8.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 8.00 92.00   |Player4 4 0.00 100.00  |Player5 5 0.00 100.00  |Action 1 0 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 3    |HeroPosition 4 |Pot 1.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 1.00 99.00   |Player4 4 0.00 100.00  |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 3    |HeroPosition 4 |Pot 2.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 2.00 98.00   |Player4 4 0.00 100.00  |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 3    |HeroPosition 4 |Pot 100.00 |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 100.00 0.00  |Player4 4 0.00 100.00  |Player5 5 0.00 100.00  |Action 0 1 0
|HandPercentage 0.5958  |NoOfPlayersInPlay 3    |HeroPosition 5 |Pot 2.00   |Player0 0 0.00 100.00  |Player1 1 0.00 100.00  |Player2 2 0.00 100.00  |Player3 3 1.00 99.00   |Player4 4 1.00 99.00   |Player5 5 0.00 100.00  |Action 0 1 0

我在 python 中使用 CNTK,我的读者如下:

def create_reader(path):
    streams = CTFDeserializer(path, StreamDefs(
        HandPercentage = StreamDef(field='HandPercentage', shape=input_dim,   is_sparse=False),
        NoOfPlayersInPlay = StreamDef(field='NoOfPlayersInPlay', shape=input_dim,   is_sparse=False),
        HeroPosition = StreamDef(field='HeroPosition', shape=input_dim,   is_sparse=False),
        Pot = StreamDef(field='Pot', shape=input_dim,   is_sparse=False),
        Player0 = StreamDef(field='Player0', shape=player_dim,   is_sparse=False),
        Player1 = StreamDef(field='Player1', shape=player_dim,   is_sparse=False),
        Player2 = StreamDef(field='Player2', shape=player_dim,   is_sparse=False),
        Player3 = StreamDef(field='Player3', shape=player_dim,   is_sparse=False),
        Player4 = StreamDef(field='Player4', shape=player_dim,   is_sparse=False),
        Player5 = StreamDef(field='Player5', shape=player_dim,   is_sparse=False),
        labels  = StreamDef(field='Action', shape=label_dim,   is_sparse=False)))
    return MinibatchSource(streams)

当我需要训练我的模型时,我需要将所有节点放在一起,我创建一个如下所示的 input_map:

input_dim = 1
player_dim = 3
label_dim = 3

....

HandPercentage = Input(input_dim,  is_sparse=False)
NoOfPlayersInPlay = Input(input_dim,  is_sparse=False)
HeroPosition = Input(input_dim,  is_sparse=False)
Pot = Input(input_dim,  is_sparse=False)
Player0 = Input(player_dim,  is_sparse=False)
Player1 = Input(player_dim,  is_sparse=False)
Player2 = Input(player_dim,  is_sparse=False)
Player3 = Input(player_dim,  is_sparse=False)
Player4 = Input(player_dim,  is_sparse=False)
Player5 = Input(player_dim,  is_sparse=False)
labels = Input(label_dim, is_sparse=False)  # TODO: make sparse once it works

input_map = {
    HandPercentage : reader.streams.HandPercentage,
    NoOfPlayersInPlay : reader.streams.NoOfPlayersInPlay,
    HeroPosition : reader.streams.HeroPosition,
    Pot : reader.streams.Pot,
    Player0 : reader.streams.Player0,
    Player1 : reader.streams.Player1,
    Player2 : reader.streams.Player2,
    Player3 : reader.streams.Player3,
    Player4 : reader.streams.Player4,
    Player5 : reader.streams.Player5,
    labels : reader.streams.labels
}

我想将它们连接在一起,然后将它们传递到我的火车模型中:

inputs = []
inputs.append(HandPercentage)
inputs.append(NoOfPlayersInPlay)
inputs.append(HeroPosition)
inputs.append(Pot)
inputs.append(Player0)
inputs.append(Player1)
inputs.append(Player2)
inputs.append(Player3)
inputs.append(Player4)
inputs.append(Player5)

features = inputs

# apply model to input
z = model(features)

有谁知道我怎么能在 BrainScript 中做类似 RowStack 的事情?

由于您拥有所有密集特征,如果可能的话,为什么不将所有输入连接到一个平面特征向量中以开始生成输入文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM