Когда эта строка не выполняется в вашем прогоне:
self.val_left[i] = self.ldata[img_id][{{}, {center_y-self.psz, center_y+self.psz}, {center_x-self.psz, center_x+self.psz}}]
трассировка стека говорит нам, что функция в Tensor.c имеет проверку на неудачу аргумента:
static int torch_Tensor_(__index__)(lua_State *L)
{
...
for(dim = 0; dim < ndims; dim++)
{
...
else if(lua_istable(L, 2))
{
...
THArgCheck((start >= 0) && (start < tensor->size[cdim]), 2, "start index out of bound");
...
}
...
}
}
Это реализация оператора индексации с аргументом таблицы для сужения и выбора . Кажется, что вычисленные первые индексы в одном измерении слишком велики / слишком малы.
Попробуйте напечатать значения center_y-self.psz
и center_x-self.psz
, чтобы увидеть, кто из них является виновником и на каком конце интервала вы превышаете границы. Я не могу дать дальнейший совет, потому что я не знаком с остальным кодом или данными.