Как векторизовать фитинги глубокого обучения или как загрузить серию обученных моделей из тензорного потока? - PullRequest
0 голосов
/ 10 мая 2019

Я новое глубокое обучение. Может кто-нибудь посоветовать мне, как избежать цикла do для многократного вызова процедур подгонки тензорного потока?

Пытаясь сгенерировать некоторые динамические аппроксимации, я обнаружил, что пишу цикл do, каждый шаг которого создает отдельную модель.

import numpy as np # linear algebra
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
from scipy.stats import logistic
from numpy.random import choice

from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten, Conv2D

### simulated data for repeated learning
n = 4
p = 5
for idat in range(n):
beta = np.random.uniform(-1,1,p+1).reshape(( p+1,1)) 
ndat = 10+ np.random.random_integers(10)
tidat = np.array([np.random.uniform(0,1,1),]ndat) s = np.random.uniform(0,1,ndatp).reshape((ndat, p))
x = np.append(tidat, s, axis=1) ### data
phat = logistic.cdf(x.dot(beta))
y = np.random.binomial(1, p=phat) ### label
if (idat==0):
dat = np.append(y,x, axis=1) 
if (idat>0):
dat = np.vstack((dat,np.append(y,x, axis=1) ))

### function for each deep learning training
def hazard(outy,outx):
   numclasses = 2 ###build the model 
   dlos = Sequential() 
   dlos.add(Flatten()) 
   dlos.add(Dense(10, activation='relu')) 
   dlos.add(Dense(numclasses, 
   activation='softmax'))
   dlos.compile(loss=keras.losses.categoricalcrossentropy, optimizer='adam', 
   metrics=['accuracy']) ### fitting the intermediate data dlos.fit(outx, 
   out_y,epochs=20)
   return dlos

   tp = np.unique(dat[:,1:2]) ### number of different time points
   for i in range(len(tp)): ### how do we avoid or vectorize this do loop? 
   imgrows, imgcols = 1, 6 
   numclasses = 2 
   tnow=tp[i] 
   tdat=dat[np.where(dat[:,1] == tnow)] 
   y = tdat[:, ] out
   y = keras.utils.tocategorical(y, numclasses)
   x = tdat[:,1:]
   numimages = tdat.shape[0] 
   outx = x.reshape(numimages, imgrows, imgcols, 1) 
   model=hazard(outy,out_x)
   model.save('DLOS'+format(i)+'.h5')

### simulate test data
p = 5
ndat = 3
tidat = np.array([np.random.uniform(0,1,1),]ndat) s = np.random.uniform(0,1,ndatp).reshape((ndat, p))
x = np.append(tidat, s, axis=1) ### data

import tensorflow as tf
import keras
smodel = keras.models.load_model('DLOS0.h5') ### this does not work
predictions = smodel.predict(x)
print("Predicted: ",predictions)

Моя первая проблема заключается в том, что цикл do может занять много времени, и он хотел бы иметь возможность векторизовать или упростить его.

Моя вторая проблема заключается в том, что я не могу одновременно загрузить модели, которые были сохранены из цикла do, если мне нужно использовать цикл do. Есть ли способ загрузить все обученные модели в список и использовать их для прогнозирования с новыми данными?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...