【问题标题】:Trying to learn tensorflow.js but need a simpler example like brain.js尝试学习 tensorflow.js,但需要一个更简单的示例,例如 Brain.js
【发布时间】:2018-11-24 16:30:40
【问题描述】:

brain.js 的示例让我能够真正了解该软件 - 以及机器学习的各个方面。

现在我正在尝试学习 tensorflow.js,很难复制相同类型的代码。

例如,TensorFlow等价于下面的大脑代码是什么?

var net = new brain.NeuralNetwork();

net.train([{input: { r: 0.03, g: 0.7, b: 0.5 }, output: { black: 1 }},
       {input: { r: 0.16, g: 0.09, b: 0.2 }, output: { white: 1 }},
       {input: { r: 0.5, g: 0.5, b: 1.0 }, output: { white: 1 }}]);

var output = net.run({ r: 1, g: 0.4, b: 0 });  // { white: 0.99, black: 0.002 }

【问题讨论】:

  • 为什么投反对票?我觉得这是个好问题。如果我说错了什么或冒犯了我,我真诚地道歉。我不知道我做了什么来获得反对票 - 请告诉我。如果我不知道,我就无法为未来纠正自己。

标签: javascript node.js tensorflow.js brain.js


【解决方案1】:

这将是您提供的示例的一种简化版本:

const net = tf.sequential();
net.add(tf.layers.dense({
  units: 2,
  inputShape: [3],
  activation: 'sigmoid'
}));
net.compile({
  loss: 'meanSquaredError',
  optimizer: 'sgd'
});

const xs = tf.tensor2d([
  [0.03, 0.7, 0.5],
  [0.16, 0.09, 0.2],
  [0.5, 0.5, 1.0]
]);
const ys = tf.tensor2d([
  [1, 0],
  [0, 1],
  [0, 1]
]);

net.fit(xs, ys).then(() => {
  const xPredict = tf.tensor2d([
    [1.0, 0.4, 0.0]
  ]);

  const prediction = net.predict(xPredict);
  prediction.print();
});
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.11.6">
</script>

但正如您所见,您必须更具体地了解神经网络的实际作用。我只是使用了您可以使用的基本选项。正如你所看到的那样,网络性能很差,但我希望你能了解它是如何工作的。所以让我试着解释一下这个 sn-p 做了什么:

const 通常用于tf.tensors,因为它们位于 GPU 上,因此无论如何都无法更改。

tf.sequential() 创建一个空的前馈网络。 (如果您不知道那是什么,请先尝试在没有实现的情况下学习神经网络)

tf.layers.dense() 创建一个全连接层。

units:2 定义层的输出形状。在这种情况下,一个具有两个值的向量。

inputShape: [3] 在任何非第一层都可以忽略,因为它可以由前一层推断并定义输入张量的形状

activation: 'sigmoid'是应用于层返回值的激活函数,高度依赖于你要解决的问题。

.compile() 使用给定的选项编译网络,并且非常可定制

xsys 是训练数据集。注意:它们有一个额外的维度来表示多个 x-y 对,因此它们可以批量传递给训练函数。

.fit()是训练方法,训练网络的内部权重。注意:这是一个异步函数,所以你必须等到它完成才能使用模型。

xPredict是测试数据,也比网络的返回形状高一维。

.predict() 根据给定的输入预测网络的输出。

.print() 在控制台中输出张量。 (如果太大,会被裁剪)

我强烈建议您在尝试(通过复制)实现神经网络之前先了解有关神经网络的更多信息,因为它们会变得非常复杂和令人困惑。然后您可以阅读文档以了解可能的情况。

【讨论】:

  • 谢谢先生!你让我今天一整天都感觉很好。我将研究这个并阅读更多关于神经网络的内容。感谢您花时间解释代码的各个方面。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-27
  • 2011-09-03
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多