#numpy #tensorflow
#numpy #тензорный поток
Вопрос:
Я пытаюсь загрузить и использовать предварительно подготовленную модель на некоторых образцах изображений, чтобы узнать о ней больше. Предварительно подготовленная модель, которую я пытаюсь использовать, находится здесь: https://github.com/nikhilmaram/Show_and_Tell
Они ссылаются на предварительно подготовленную модель здесь: https://ucsb.box.com/s/vqcxockfzoxfqltrg4l619x1cfvnskog Но они точно не указывают, как лучше всего его использовать.
Который при загрузке представляет собой файл .npy, содержащий, как я полагаю, веса модели. Я никогда раньше не использовал что-то подобное, поэтому я пытаюсь понять, как я могу загрузить такую сохраненную модель в модель тензорного потока, которую я могу затем использовать? Я делаю некоторые предположения, поскольку, похоже, они используют tensorflow. Попытался загрузить, используя приведенное ниже, чтобы хотя бы понять, с какой структурой данных я имею дело, но безуспешно.
import numpy as np
np.load('Documents/39999.npy')
ValueError: Object arrays cannot be loaded when allow_pickle=False
Редактировать: как указано в комментариях, я могу загрузить файл с помощью np.load, как показано ниже, но я все еще не уверен, как взять массив весов numpy и загрузить в tensorflow.
import numpy as np
data = np.load('Documents/39999.npy',allow_pickle=True)
Глядя на структуру этого файла, я получаю следующее, которое я не совсем уверен, как интерпретировать.
data.dtype
Out[24]: dtype('O')
data.shape
Out[25]: ()
Редактировать 2:
type(data)
Out[6]: numpy.ndarray
Когда я делаю data.item() Я получаю распечатанный длинный массив, пример ниже.
[[-5.75947622e-03, 4.07667161e-04, -5.18753566e-03, ...,
8.14088504e-04, -4.34151705e-04, 1.14657767e-02],
[ 4.41048900e-03, -3.57159856e-03, 3.01857502e-03, ...,
-3.98184508e-02, 1.49278138e-02, -8.20163079e-03],
[-2.44483184e-02, 2.32945569e-02, -2.34904625e-02, ...,
-1.79554094e-02, -3.21781076e-02, 1.07798241e-02],
...,
[ 5.12963720e-03, 2.35215593e-02, -3.53378877e-02, ...,
3.48278917e-02, -2.01826524e-02, 2.35197158e-03],
[ 3.45730968e-03, -1.26461498e-02, 1.03930170e-02, ...,
-3.20292413e-02, -6.37839548e-04, -7.48459855e-03],
[ 3.67492763e-03, 6.75461590e-02, 9.46969260e-03, ...,
4.72220499e-03, 4.39464301e-02, 6.21765293e-03]]]],
dtype=float32)}
Комментарии:
1. Вы пробовали
data = np.load('Doc...npy', allow_pickle=True)
? Если это работает, вы можете, по крайней мере, изучитьdata
массив. Начните с проверкиdata.dtype
иdata.shape
. Тем не менее, это будут просто данные или параметры (веса), а не функция или код, которые вы можете подключить и запустить.2. Это позволяет мне загружать файл, по крайней мере, так что это хорошо. Я также понимаю, что это будут веса, которые мне нужно каким-то образом преобразовать в модель tf, что является моей конечной целью. Некоторые странные результаты, когда я делаю data.dtype, я получаю dtype(‘O’), а когда я делаю data.shape, я получаю ()
3. Это одноэлементный массив объектов dtype. Вы можете получить доступ к этому элементу с
data.item()
помощью . Я не знаю, что это будет. Когда вы сохраняете не-numpy-массив сnp.save
помощью , он сначала оборачивает его в такой массив и используетpickle
в не-numpy-частях.4. @user2355903 — можете ли вы обновить свой вопрос с помощью содержимого и
type()
ofdata.item()
?5. @jakub Я обновил вопрос с этими результатами.