-
-
Notifications
You must be signed in to change notification settings - Fork 107
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
训练刚结束时的验证效果和保存并重新加载模型参数后进行验证的结果不一样 #50
Comments
你能check一下训练时候测试使用的数据和训练完之后使用的数据是否一致吗。就是check一下缓存的pkl文件里用的imageids是否一致。 |
我只找到了一个pkl文件,即 import pickle
# 读取.pkl文件
with open('fcn_unets5os16_spider_ep20_0.pkl', 'rb') as f:
data = pickle.load(f)
# 查看数据尺寸
print(len(data)) # 2
print(len(data[0])) # 480
print(len(data[1])) # 480
# 查看数据样式
print(data[0][0])
'''
['2601', array([[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]])]
'''
print(data[1][0])
'''
[[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
...
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]
[0 0 0 ... 0 0 0]]
'''
# 这里的列表也是array类型,只是用print单独打印出来时没显示 可见两个列表里保存的数据的样式不一样,第二个列表里没保存imageid。我比较了相同位置的表示图片的二维列表(我没搞清楚这里的array表示是预测完的结果还是原图),发现二者并不相同: print(sum(data[0][0][1]==data[1][0]))
'''
[256 256 256 256 256 256 256 256 256 254 252 252 251 251 250 250 250 250
249 249 249 248 249 251 249 249 248 248 248 248 250 251 252 251 248 247
246 245 245 246 247 247 248 247 249 250 249 250 251 253 252 252 251 251
250 250 251 253 253 251 243 242 240 248 249 242 238 238 230 227 225 224
221 219 212 221 229 233 232 231 230 234 235 236 234 236 237 239 239 240
238 239 238 240 238 240 241 239 240 240 238 237 238 240 233 226 221 215
216 223 225 230 231 237 231 229 230 233 236 237 244 248 249 245 243 242
240 235 237 235 235 228 222 224 229 238 238 228 235 248 253 255 255 254
254 253 253 253 252 253 252 251 254 254 255 255 255 250 250 249 249 244
237 232 237 242 242 242 247 235 234 234 233 232 237 234 239 243 245 250
250 248 240 238 232 225 223 214 222 225 224 224 220 213 215 216 218 221
224 230 229 227 227 227 226 223 229 230 225 219 218 216 221 222 225 236
238 240 241 241 241 242 242 242 241 242 243 243 242 248 248 248 248 248
248 248 247 247 247 247 247 247 248 248 249 250 249 249 249 249 250 250
252 255 256 256]
'''
# 我的图片尺寸为256x256,如果两个二维列表相同,此处输出的列表里应全为256. 这是否意味着前后两次验证用的imageids顺序不一致? 补充:我后面发现还有一个pkl文件 |
我的数据集中的验证集的imageid标号范围是2400~2849,一共480张图片。虽然图片编号如此,但验证集的图片并不是从训练集中抽取的。 |
Environment (使用环境)
Question description (问题描述)
我将unet模型的某个训练配置文件稍加修改,得到了fcn_unets5os16_spider.py并将该文件作为训练我自己数据集的配置,bs=32,epochs设为20。按默认设置,每隔10个epoch在验证集val上验证效果。训练返回的结果文件中,第20个epoch结束后的验证结果如下【结果1】:
(accuracy和mpa是我加进去的)
之后我用测试脚本
dist_test.sh
,加载了第20个epoch结束后保存的参数文件epoch_20.pth
进行验证,调用测试脚本的命令如下:单独运行测试脚本得到的结果如下【结果2】:
这和前面训练时的验证结果不一样。我之后又运行了一次单独运行测试脚本的命令,结果和【结果2】一样。
请问为什么会这样?
The text was updated successfully, but these errors were encountered: