multi_gpu_model: объект типа 'NoneType' не имеет len () - PullRequest
0 голосов
/ 13 июня 2019

Я получаю эту ошибку при использовании keras multi_gpu_model.Код запускает штрафы, если я исключу эту строку.Кроме того, с моделью CNN он работает отлично, просто в то время как плотная сеть выдает ошибку.Не могли бы вы помочь мне решить эту проблему.Спасибо.

import numpy as np
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.layers import LSTM, BatchNormalization,Flatten
from keras.utils.vis_utils import model_to_dot
from keras.optimizers import adam
from keras.models import load_model
import pylab
from sklearn.model_selection import train_test_split
from keras.utils import multi_gpu_model 

from scipy.io import wavfile
X=np.ones(10000)
y=np.zeros(100)
x_train=X
y_train=y
x_train=np.array(x_train)
y_train=np.array(y_train)
x_train.shape=(1,10000)
y_train.shape=(1,100)
model = Sequential()
model.add(Dense(500,activation = 'tanh'))
model.add(Dense(450, activation = 'tanh'))
model.add(Dense(412, activation = 'tanh'))
model.add(Dense(100, activation = 'tanh'))
opt = adam(lr=0.002, decay=1e-6)
model = multi_gpu_model(model, gpus=4)
model.compile(loss='mae', optimizer=opt, metrics=['accuracy'])
model.fit(x_train,y_train,epochs=50, batch_size = 40000)
Error: Traceback (most recent call last):
  File "p.py", line 37, in <module>
    model = multi_gpu_model(model, gpus=4)
  File "/home/ENG/benipas1/anaconda3/envs/new/lib/python3.7/site-packages/keras/utils/multi_gpu_utils.py", line 203, in multi_gpu_model
    for i in range(len(model.outputs)):
TypeError: object of type 'NoneType' has no len()

1 Ответ

0 голосов
/ 13 июня 2019

Проблема здесь:

model = Sequential()
model.add(Dense(500,activation = 'tanh'))

Вы не задаете входную форму для первого слоя, поэтому выходные данные модели полностью не определены, а model.outputs - Нет.Если вы предоставляете входную форму для первого слоя, то выходные данные определены, и она должна работать нормально.Вы, вероятно, предоставляете форму ввода для своих моделей CNN, и именно поэтому она работает:

model.add(Dense(500,activation = 'tanh', input_shape=(something,)))
...