首页 > 解决方案 > 'NoneType' 对象在调用 model.fit_generator() 时不可调用

问题描述

def data_generator(descriptions, photos, wordtoix, max_length, num_photos_per_batch):
    X1, X2, y = list(), list(), list()
    n=0
    # loop for ever over images
    while 1:
        for key, desc_list in descriptions.items():
            n+=1
            # retrieve the photo feature
            photo = photos[key]
            for desc in desc_list:
                # encode the sequence
                seq = [wordtoix[word] for word in desc.split(' ') if word in wordtoix]
                # split one sequence into multiple X, y pairs
                for i in range(1, len(seq)):
                    # split into input and output pair
                    in_seq, out_seq = seq[:i], seq[i]
                    # pad input sequence
                    in_seq = pad_sequences([in_seq], maxlen=max_length)[0]
                    # encode output sequence
                    out_seq = to_categorical([out_seq], num_classes=vocaab_size)[0]
                    # store
                    X1.append(photo)
                    X2.append(in_seq)
                    y.append(out_seq)
            # yield the batch data
            if n==num_photos_per_batch:
                yield [[array(X1), array(X2)], array(y)]
                X1, X2, y = list(), list(), list()
                n=0


for i in range(epochs):
    generator = data_generator(mapping, train_features, word2ix, max_length, 3)
    #print(generator)
    model.fit_generator(generator,epochs=1,steps_per_epoch=steps,verbose=1,callbacks=None)
    model.save('./model_weights/model_' + str(i) + '.h5')

TypeError Traceback (最近一次调用最后一次) in () 2 generator = data_generator(mapping, train_features, word2ix, max_length, 3) 3 #print(generator) ----> 4 model.fit_generator(generator,epochs=1,steps_per_epoch=步骤,verbose=1,callbacks=None) 5 model.save('./model_weights/model_' + str(i) + '.h5')

5 帧 /usr/local/lib/python3.6/dist-packages/tensorflow/python/eager/def_function.py in _call(self, *args, **kwds) 805 # 在这种情况下我们在第一次创建了变量调用,所以我们运行 806 # defunned 版本,它保证永远不会创建变量。--> 807 return self._stateless_fn(*args, **kwds) # pylint: disable=not-callable 808 elif self._stateful_fn is not None: 809 # 提前释放锁,让多个线程可以执行调用

TypeError:“NoneType”对象不可调用

标签: tensorflowmachine-learningkeras

解决方案


推荐阅读