【发布时间】: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