Javascript 如何使用tf.browser.fromPixels(图像)实现TensorFlow.js训练的基本示例的真/假输出?
我已经用谷歌搜索了我能想到的每个问题的版本,但就我的一生而言,我找不到一个tensorflow.js训练tf.browser.fromPixels(图像)的基本示例,结果是“是”或“否”。我能找到的所有示例都是从预先训练过的网络开始的 我已经建立了一个25x25像素图像的数据库,并将它们作为画布存储在一个变量中,如:Javascript 如何使用tf.browser.fromPixels(图像)实现TensorFlow.js训练的基本示例的真/假输出?,javascript,tensorflow,tensorflow.js,Javascript,Tensorflow,Tensorflow.js,我已经用谷歌搜索了我能想到的每个问题的版本,但就我的一生而言,我找不到一个tensorflow.js训练tf.browser.fromPixels(图像)的基本示例,结果是“是”或“否”。我能找到的所有示例都是从预先训练过的网络开始的 我已经建立了一个25x25像素图像的数据库,并将它们作为画布存储在一个变量中,如: let data = { t: [canvas1, canvas2, canvas3, ... canvas3000 ....], f: [canvas1, can
let data = {
t: [canvas1, canvas2, canvas3, ... canvas3000 ....],
f: [canvas1, canvas2, ... and so on ...]
}
我认为这样做应该是微不足道的:
data.t.forEach(canvas => {
const xs = tf.browser.fromPixels(canvas);
const ys = tf.tensor([1]); // output 1, since this canvas is from the `t` (true) dataset
model.fit(xs, ys, {
batchSize: 1,
epochs: 1000
});
});
data.f.forEach(canvas => {
const xs = tf.browser.fromPixels(canvas);
const ys = tf.tensor([0]); // output 0, since this canvas is from the `f` (false) dataset
model.fit(xs, ys, {
batchSize: 1,
epochs: 1000
});
});
model.predict(tf.browser.fromPixels(data.t[0])).print(); // -> [1]
model.predict(tf.browser.fromPixels(data.t[1])).print(); // -> [1]
model.predict(tf.browser.fromPixels(data.t[2])).print(); // -> [1]
model.predict(tf.browser.fromPixels(data.f[0])).print(); // -> [0]
model.predict(tf.browser.fromPixels(data.f[1])).print(); // -> [0]
model.predict(tf.browser.fromPixels(data.f[2])).print(); // -> [0]
但是对于TF来说,像inputShape
和各种小细节这样的细节是新的,这使得在无法找到基本示例的情况下尝试实现这一点非常痛苦。此培训职能的有效表示形式是什么?以下是迄今为止的代码:
//想象一下,DataSet构建了一个大型数据集,如我的
//询问并调用数据变量为的callpack函数
//它唯一的论点,充满了预先分类的图像。自从我的数据库
//很多图像是本地存储的,我不能在这里给出一个例子
//这是完全可行的,但这至少让人明白了这个想法。
新数据集(
数据=>{
const model=tf.sequential();
model.add(
//是的,我意识到我想要一个卷积层,
//一些最大池,过滤等,但我试图开始简单
致密的({
单位:[1],
inputShape:[25,25,3],
数据格式:“channelsLast”,
激活:“tanh”
})
);
compile({优化器:“sgd”,loss:“BinaryCross熵”,lr:0.1});
data.t.forEach(canvas=>{
const xs=tf.browser.fromPixels(画布);
const ys=tf.tensor([1]);//输出1,因为这个画布是
//从't'(true)数据集
模型拟合(xs,ys{
批量大小:1,
纪元:1000
});
});
data.f.forEach(画布=>{
const xs=tf.browser.fromPixels(画布);
const ys=tf.tensor([0]);//输出0,因为这个画布是
//从“f”(false)数据集
模型拟合(xs,ys{
批量大小:1,
纪元:1000
});
});
model.predict(tf.browser.fromPixels(data.t[0])).print();/->[1]
model.predict(tf.browser.fromPixels(data.t[1])).print();/->[1]
model.predict(tf.browser.fromPixels(data.t[2])).print();/->[1]
model.predict(tf.browser.fromPixels(data.f[0])).print();/->[0]
model.predict(tf.browser.fromPixels(data.f[1])).print();/->[0]
model.predict(tf.browser.fromPixels(data.f[2])).print();/->[0]
},
{canvas:true}
);代码>
您的模型只有一个图层。你需要更多的图层。
有很多教程,你可以按照建立一个分类器来区分两个或更多类的图像。本教程使用CNN发布在tensorflow的官方网站上
此外,您可以看到如何使用完全连接的神经网络来构建分类器,尽管精度可能不如CNN模型