【问题标题】:how to format input data in tensorflow.js?如何在 tensorflow.js 中格式化输入数据?
【发布时间】:2021-11-25 21:01:10
【问题描述】:

我想要一个接受 6 个输入并预测 1 个输出的模型。它与预测任务需要多长时间有关。

这是我目前得到的:

 const model = tf.sequential();
        model.add(tf.layers.dense({units: 1, inputShape: [1]}));
        model.compile({
            optimizer: 'sgd',
            loss: 'meanSquaredError'
        });

        async function createAndTrainModel(){
            var xs = tf.tensor2d([40, 1, 0], [20, 1, 0]);
            var ys = tf.tensor2d([45], [25]);
            // Here I wanted to explain that 40,1,0 must be predicted as 45.
            // And a combination of 20, 1, 0 must be predicted as 25.

            await model.fit(xs, ys, {epochs: 500});
            console.log("done training model!");

            var result = model.predict(
                tf.tensor([-40, 15, 0])
            );

            result = result.dataSync();
            console.log(result);
        }

我有一个用 Python 编写的工作示例,但我真的很想用 JavaScript 来做这件事。我不明白输入形状是什么。我想到的只有圆形、三角形和正方形……

我发现的几乎每一个教程都假设您对 tensorflow 的工作原理、“维度”是什么(无论可能是什么)有所了解

有人可以解决我的问题并向我解释这里发生了什么吗?什么是输入形状?什么是维度?为什么会这样使用?我明白什么是数组,但我不明白为什么你需要定义一个维度或类似的东西。

我的 Python 代码,可以运行:

import keras.models
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

import tensorflowjs as tfjs

# Configure Training Data
data = pd.read_csv("task-data.csv", sep=";")
data = data[["actual_time", "moeilijkheid", "eerder_gedaan", "leukheid"]]
celsius_q = np.array(data.drop(["actual_time"], 1), dtype=int)
fahrenheit_s = np.array(data["actual_time"], dtype=int)

# Creating and Training the Model
l0 = tf.keras.layers.Dense(units=1)
model = tf.keras.Sequential([l0])
model.compile(loss="mean_squared_error", optimizer=tf.keras.optimizers.Adam(0.1), metrics=['accuracy'])
history = model.fit(celsius_q, fahrenheit_s, epochs=5000, verbose=False)
print("Finished training the model.")

predictions = model.predict(celsius_q)

print(model.predict([[
    4,1,1,5,8,2
]]))

model.evaluate(celsius_q, fahrenheit_s)

# Saving the Model
tfjs.converters.save_keras_model(model, 'models')

数据是这样的:

"actual_time";"moeilijkheid";"eerder_gedaan";"leukheid"

45;4;1;0

25;2;1;0

【问题讨论】:

    标签: javascript python tensorflow machine-learning tensorflow.js


    【解决方案1】:

    为了过度简化,张量可以只是单个数字或更高复杂度的数组。一维张量是一个数字,二维张量是一个数组。 3d 张量是数组的数组。 4d 张量是......好吧,你明白了:)

    你的数据

    "actual_time";"moeilijkheid";"eerder_gedaan";"leukheid"

    有一个维度和 4 个字段
    你期望有多少记录?张量形状将是 [4, numRecords][numRecords, 4],这取决于您如何迭代它。

    假设您想要有 10 个这样的数据集,您想并行分析它们?维度将是 [10, 4, numRecords]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-11
      • 2020-04-02
      • 2017-09-05
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      相关资源
      最近更新 更多