Как получить вывод словаря из генератора, который выводит массив со словарем для настраиваемого генератора изображений keras - PullRequest
1 голос
/ 25 мая 2020

У меня есть созданный на заказ генератор для вывода нескольких значений для прогнозирования. Я безуспешно пытаюсь получить значения, соответствующие заданному изображению. Вот мой результат:

e(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.]],

     [[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., 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., 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.],
      [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., 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.]]]], dtype=float16),
 {'HourTime': array([0.3848, 0.2375], dtype=float16),
  'MinTime': array([0.633, 0.862], dtype=float16),
  'SecTime': array([0.967, 0.717], dtype=float16)})

Мой вывод исходит из моего генератора здесь:

input_Size = 128
x,y,xrange,yrange = [136,150,47,47]
def ImGenA(directory, files_Loc, Hour, Min, Sec, batch_size):
    while True:
        batch_paths  = imgId = np.random.choice(a = files_Loc.index, size=batch_size)
        batch_input  = []
        batch_Hr     = []    
        batch_Min    = []
        batch_Sec    = []
        for i in batch_paths:
            img1 = cv2.imread(os.path.join(directory,files_Loc[i]))
            img1 = ndimage.rotate(img1, 210)
            img1 = cv2.resize (img1, (input_Size,input_Size))

            batch_input+=[img1/255]
            batch_Hr += [Hour[i]]
            batch_Min += [Min[i]]
            batch_Sec += [Sec[i]]

            batch_x = np.array(batch_input, dtype='float16')
            batch_y1 = np.array(batch_Hr, dtype='float16')
            batch_y2 = np.array(batch_Min, dtype='float16')
            batch_y3 = np.array(batch_Sec, dtype='float16')
        yield( batch_x, {'HourTime' : batch_y1, 'MinTime': batch_y2, 'SecTime': batch_y3})


    genA = ImGenA(directory=folder, files_Loc= train['ImageLoc'], Hour = train['HrPer'], Min = train['MinPer'], Sec = train['SecPer'],batch_size=2)
    b=next(genA)
    b[0][0] #provides image at position 0, but how do I find the Y output 'HourTime' at the same position?

Мне трудно извлечь «HourTime» из сохраненного вывода при запуске генератора. Извините, я предполагаю, что об этом спрашивали раньше, но я не уверен, как я не могу найти ответ.

1 Ответ

0 голосов
/ 25 мая 2020

Это просто, если заставить его работать.

b[1]['HourTime'][0]

Предоставляет 'HourTime' из словаря для позиции 0. IE. 0,3848

...