簡體   English   中英

如何將 3 維張量傳遞到密集層(tensorflow.js)

[英]How can I pass a 3 dimensional tensor into a dense layer (tensorflow.js)

我正在尋找一種將標准化圖表輸入到我的 tensorflow.js model 的方法。 現在,它正在傳遞一個二維張量,並且該代碼可以完美運行。 我找到了一個新的數據點,我想將其添加到該二維張量中,但是,該數據點是一個點數組,當歸一化時,它的范圍在 0-1 之間。 如果數組有一定數量的點,我會將每個單獨的點作為數據點; 但是,數組的大小因我的所有數據而異。 這是我的代碼和 javascript object 形式的示例數據集:

{
    "rank": "27",
    "fame": "4505",
    "deaths": "1",
    "accountAge": 199,
    "characters": "7",
    "skins": "0",
    "verified": 1,
    "oneDay": [ 3856, 4003, 4138, 4282, 4316, 4431, 4505, 4719],
    "oneWeek": [ 1100, 1243, 1511, 1948, 2814, 3267, 3557],
    "lifeTime": [231, 1711, 2257, 4104, 5366, 7610, 9142, 11123, 12831, 15003, 15154, 16600, 17438, 18466, 19777, 20626, 22230, 24180, 24970, 25918, 26728, 28325, 29318, 30187, 30645, 31068, 33142, 35088, 35582, 35984, 37162, 39567, 0, 41089, 42615, 43609, 44254, 46740, 47231, 48261, 50673, 51161, 52646, 53592, 55470, 56487, 57254, 58422, 58428, 62407, 65122, 0, 65122, 69784, 70703, 72511, 77764, 78240, 80642, 81143, 81204, 82929, 85771, 89594, 90746, 92073, 92265, 376, 425, 476, 702, 776, 777, 827, 828, 1089, 1091, 998, 1031, 1084, 1148, 1100    ]
}

model 設置

    model = tf.sequential();

    //input layer
    model.add(tf.layers.dense({
        units: 100,
        inputShape: [9],
        activation: 'sigmoid'
    }))

    //hidden layers
    model.add(tf.layers.dense({
        units: 50,
        activation: 'sigmoid'
    }))

    //output layer
    model.add(tf.layers.dense({
        units: 1,
        activation: 'sigmoid'
    }))

當前數據設置

var xs2D = [], ys2D = []
for (let i of data) {
    //removed data normalization because it was very big

    xs2D.push([rank, fame, deaths, age, char, skin, od, ow, lt])
    ys2D.push([i.verified])
}

const xs = tf.tensor2d(xs2D)
const ys = tf.tensor2d(ys2D)

如果xs是形狀為[a, b, c]的 3d 張量,則第一層的 inputShape 應為[b, c]

由於ys不是 3d 張量,因此應在最后一層之前通過 flatten,以便返回 2d 張量。

這是一個小例子:

const model = tf.sequential({
     layers: [tf.layers.dense({units: 1, inputShape: [1, 10]}),
              tf.layers.flatten(),
              tf.layers.dense({units: 1})]
});
model.compile({optimizer: 'sgd', loss: 'meanSquaredError'}); 
// the loss function and the optimizer are just for the sake of example 
// in order to use compile, required before using fit

await model.fit(tf.ones([8, 1, 10]), tf.ones([8, 1]));
model.predict(tf.ones([8, 1, 10]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM