gpt4 book ai didi

tensorflow - 如何在 tensorflow.js 模型中添加图像并为给定的图像标签训练模型

转载 作者:行者123 更新时间:2023-12-04 15:48:54 24 4
gpt4 key购买 nike

我们使用 TensorFlow.js 创建和训练模型。我们使用 tf.fromPixels() 函数将图像转换为张量。我们想创建一个具有以下属性的自定义模型:

AddImage( HTML_Image_Element, 'Label'): 添加带有自定义标签的图像元素Train()/fit() :使用关联标签训练此自定义模型Predict():预测带有相关标签的图像,它将返回预测响应以及每张图像的附加标签。为了更好地理解,让我们举个例子:假设我们有三个图像用于预测,即:img1、img2、img3,分别带有三个标签“A”、“B”和“C”。所以我们想用这些图像和相应的标签来创建和训练我们的模型,如下所示:当用户想要预测“img1”时,它会显示预测“A”,类似地,对于“img2”预测为“B”,对于“img3”预测为“C”

请向我建议我们如何创建和训练这个模型。

This is webpage we used to create a model with images and its associate labels:

<apex:page id="PageId" showheader="false">
<head>
<title>Image Classifier with TensorFlowJS</title>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.11.2"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
</head>
<div id="output_field"></div>
<img id="imgshow" src="{!$Resource.cat}" crossorigin="anonymous" width="400" height="300" />

<script>
async function learnlinear(){


//img data set
const imageHTML = document.getElementById('imgshow');
console.log('imageHTML::'+imageHTML.src);

//convert to tensor
const tensorImg = tf.fromPixels(imageHTML);
tensorImg.data().then(async function (stuffTensImg){
console.log('stuffTensImg::'+stuffTensImg.toString());

});
const model = tf.sequential();

model.add(tf.layers.conv2d({
kernelSize: 5,
filters: 20,
strides: 1,
activation: 'relu',
inputShape: [imageHTML.height, imageHTML.width, 3],
}));

model.add(tf.layers.maxPooling2d({
poolSize: [2, 2],
strides: [2, 2],
}));

model.add(tf.layers.flatten());

model.add(tf.layers.dropout(0.2));

// Two output values x and y
model.add(tf.layers.dense({
units: 2,
activation: 'tanh',
}));

// Use ADAM optimizer with learning rate of 0.0005 and MSE loss
model.compile({
optimizer: tf.train.adam(0.0005),
loss: 'meanSquaredError',
});
await model.fit(tensorImg, {epochs: 500});
model.predict(tensorImg).print();
}
learnlinear();
</script>

</apex:page>

运行代码片段时出现以下错误:tfjs@0.11.2:1 未捕获( promise )错误:检查输入时出错:预期 conv2d_Conv2D1_input 具有 4 个维度。但是得到了一个形状为 300,400,3 的数组 在新 t (tfjs@0.11.2:1) 在 standardizeInputData (tfjs@0.11.2:1) 在 t.standardizeUserData (tfjs@0.11.2:1) 在 t。 (tfjs@0.11.2:1) 在 n (tfjs@0.11.2:1) 在 Object.next (tfjs@0.11.2:1) 在 tfjs@0.11.2:1 在新的 promise () 在 __awaiter$15 (tfjs@0.11.2:1) 在 t.fit (tfjs@0.11.2:1)

This error coming while passing this sample error

最佳答案

您只需要 reshape 您的张量数据。

您传入模型的数据应该比 inputShape 大一维。实际上,predict 采用形状为 InputShape 的元素数组。元素的数量是批量大小。因此,您的图像数据应具有以下形状 [batchsize, ...inputShape](使用省略号作为剩余参数以指示形状的后面部分等于 inputShape)

由于您仅使用一个元素进行训练(在实际情况下并不会真正发生),因此只需使用 1 的批处理大小即可。

model.predict(tensorImg.expandDims(0)).print()

关于tensorflow - 如何在 tensorflow.js 模型中添加图像并为给定的图像标签训练模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54689808/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com