https://blog.csdn.net/aaronjny/article/details/109732693 参考这篇博文进行基于深度学习的中文点选验证码的识别,组织数据的时候,也就是利用create_dataset()函数生成data.json文件时,我的正负样本数据的长度是不一样的,然后修改配置文件换成我的data.json文件,没法开始训练,训练了一个epoch就不动了。
我的json文件:正样本的个数是1,负样本的个数是2
[
1,
"D:\\python\\pythonProject_DP\\correct_words\\不_270_1.jpg",
"D:\\python\\pythonProject_DP\\gen_words\\不_270_1.jpg"
],
[
0,
"D:\\python\\pythonProject_DP\\correct_words\\不_270_1.jpg",
"D:\\python\\pythonProject_DP\\gen_words\\甩_270_2.jpg"
],
[
0,
"D:\\python\\pythonProject_DP\\correct_words\\不_270_1.jpg",
"D:\\python\\pythonProject_DP\\gen_words\\糖_270_0.jpg"
]
训练的样子
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
首先,根据您提供的json文件格式,每个样本应该是一个数组或字典,而不是一段字符串。所以你需要将json文件改写成如下格式:
[
{"label": 1,
"correct_img_path": "D:\\python\\pythonProject_DP\\correct_words\\不_270_1.jpg",
"generated_img_path": "D:\\python\\pythonProject_DP\\gen_words\\不_270_1.jpg"已黑化的小白 },
{"label": 0,
"correct_img_path": "D:\\python\\pythonProject_DP\\correct_words\\不_270_1.jpg",
"generated_img_path": "D:\\python\\pythonProject_DP\\gen_words\\甩_270_2.jpg"已黑化的小白 },
{"label": 0,
"correct_img_path": "D:\\python\\pythonProject_DP\\correct_words\\不_270_1.jpg",
"generated_img_path": "D:\\python\\pythonProject_DP\\gen_words\\糖_270_0.jpg"已黑化的小白 }
]
其次,在config.py文件中,您需要修改以下几个选项来适应新的数据集:
class Config:
# ...
json_path = 'data.json' # 修改为您的json文件路径
train_n = 100 # 修改为您的训练集长度
val_n = 20 # 修改为您的验证集长度
batch_size = 10 # 修改为您的batch_size大小
# ...
然后,对于长度不同的正负样本数据,您可以使用numpy的repeat函数将正样本数据复制到与负样本数量相同的长度,例如:
import numpy as np
correct_data = np.array([...]) # 正样本数据
negative_data = np.array([...]) # 负样本数据
if len(correct_data) < len(negative_data):
repeated_correct_data = np.repeat(correct_data, len(negative_data) // len(correct_data), axis=0)
remaining_correct_data = correct_data[:len(negative_data) % len(correct_data)]
final_correct_data = np.concatenate((repeated_correct_data, remaining_correct_data), axis=0)
final_data = np.concatenate((positive_data, negative_data), axis=0)
else:
final_data = np.concatenate((positive_data[:len(negative_data)], negative_data), axis=0)
最后,如果问题仍未解决,请检查您的数据格式、路径和代码实现等。如果需要,您可以在这里提供更多的细节或代码片段,以便我可以更好地帮助您解决问题。
如果我的回答解决了您的问题,请采纳!
引用chatGPT作答,根据您提供的信息,您的数据集中正负样本的数量是不同的。这可能会导致模型在训练时出现问题。建议您通过增加负样本的数量来平衡数据集。您可以通过使用数据增强技术来生成更多的负样本,例如旋转、缩放、裁剪等。此外,您还可以尝试使用更多的正样本来增加数据集的规模。
此外,在您提供的JSON文件中,每个样本似乎没有使用字典进行组织。您可以尝试使用以下代码来组织数据集:
{
"data": [
{"label": 1, "image1_path": "D:\\python\\pythonProject_DP\\correct_words\\不_270_1.jpg", "image2_path": "D:\\python\\pythonProject_DP\\gen_words\\不_270_1.jpg"},
{"label": 0, "image1_path": "D:\\python\\pythonProject_DP\\correct_words\\不_270_1.jpg", "image2_path": "D:\\python\\pythonProject_DP\\gen_words\\甩_270_2.jpg"},
{"label": 0, "image1_path": "D:\\python\\pythonProject_DP\\correct_words\\不_270_1.jpg", "image2_path": "D:\\python\\pythonProject_DP\\gen_words\\糖_270_0.jpg"}
]
}
请确保在生成数据集时,您使用的数据集格式与您在配置文件中指定的格式相同。如果数据集格式不正确,模型将无法正确加载数据集并训练。如果问题仍然存在,请尝试检查您的代码,以查看是否存在其他错误。