gpt4 book ai didi

python - 按照 TensorFlow 教程但无法获得准确的模型预测

转载 作者:行者123 更新时间:2023-12-01 00:46:59 24 4
gpt4 key购买 nike

我正在关注 tutorial on TensorFlow image classifications .

我的用例与教程略有不同,它使用棋子,而我使用的是交通灯,并且想要检测它是红色、绿色还是琥珀色。

我发现我的测试结果很差,并且想知道这是否与我在教程的 CreateData 部分中看到的 cv2.IMREAD_GRAYSCALE 有关。当然,颜色在我的分类器中很重要,所以我想知道教程是否转换为灰度,因此我缺乏准确的结果。

因此,我将 cv2.IMREAD_GRAYSCALE 的所有引用更改为 cv2.IMREAD_COLOR,重新运行 CreateData 例程,然后尝试运行 NeuralNetwork 创建程序,但随后失败错误:

  File "CreateNeuralNetwork.py", line 54, in <module>
history = model.fit(X, y, batch_size=32, epochs=40, validation_split=0.1)
File "/Users/stuff/Library/Python/2.7/lib/python/site-packages/tensorflow/python/keras/engine/training.py", line 709, in fit
shuffle=shuffle)
File "/Users/stuff/Library/Python/2.7/lib/python/site-packages/tensorflow/python/keras/engine/training.py", line 2688, in _standardize_user_data
training_utils.check_array_lengths(x, y, sample_weights)
File "/Users/stuff/Library/Python/2.7/lib/python/site-packages/tensorflow/python/keras/engine/training_utils.py", line 483, in check_array_lengths
'and ' + str(list(set_y)[0]) + ' target samples.')
ValueError: Input arrays should have the same number of samples as target arrays. Found 195 input samples and 65 target samples.

我猜测这已经改变了我的网络的大小/复杂性,因此现在网络创建中出现了问题,任何人都可以帮助我跟踪它的位置(我没有更改我的博客文章中的任何部分)链接到上面)。

我敢打赌这方面需要进行更改:

# normalizing data (a pixel goes from 0 to 255)
X = X/255.0

# Building the model
model = Sequential()

# 3 convolutional layers
model.add(Conv2D(32, (3, 3), input_shape = X.shape[1:]))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(64, (3, 3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(64, (3, 3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(0.25))

假设灰度像素的范围为 0 到 255,但彩色像素的范围远不止于此,而且更有可能是 RGB 向量。我不知道该去哪里,或者要改变什么。

我可能正在跟踪,如果有想法,我们将不胜感激。

此外,当使用以下行训练模型时:

history = model.fit(X, y, batch_size=32, epochs=40, validation_split=0.1)

看起来 epochs 是训练模型的次数。这样做400次比40次有优势吗?这些其他参数重要吗?我如何知道我是否“过度训练”了模型?临界点是什么?

最佳答案

显然,该错误表明它将彩色图像的每个 channel 视为单独的灰度图像。这就是为什么“找到 195 个输入样本和 65 个目标样本”,即多出 3 倍。因此,您应该查看准备数据的代码。检查第 53 行

X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1)

您应该将其更改为

X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 3)

希望这有帮助。

关于你的第二个问题“我如何知道我是否对模型进行了‘过度训练’?临界点是什么?”

绘制准确率和损失图,这将使您了解偏差和方差。对于 epochs 参数的设置,Keras 回调可以派上用场。有了这个,您可以监控任何数量,如 train_loss、train_acc 等,如果它没有增加,您可以自动停止进一步拟合模型。

关于python - 按照 TensorFlow 教程但无法获得准确的模型预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56895339/

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