簡體   English   中英

Tensorflow Keras TypeError:“NoneType”類型的 object 沒有 len()

[英]Tensorflow Keras TypeError: object of type 'NoneType' has no len()

import tensorflow as tf
import tensorflow.keras.layers as nn
import numpy as np

class Base(tf.keras.Model):
    def __init__(self):
        super(Base, self).__init__()
        
        self.user_emb = nn.Embedding(20000, 128, input_length=1)
        self.item_emb = nn.Embedding(10000, 128, input_length=1)

        self.test_dense = nn.Dense(80, activation=None)
        self.final_dense = nn.Dense(1)

    def call(self, inputs, **kwargs):
        user, item = inputs
        user_emb = self.user_emb(user)
        item_emb = self.item_emb(item)

        join_emb = tf.concat([user_emb, item_emb], -1)

        logit = self.test_dense(join_emb)
        logit = tf.squeeze(self.final_dense(logit))
        output = tf.nn.sigmoid(logit)

        return output

# Main
if __name__ == '__main__':

    model = Base()
    model.compile(loss='binary_crossentropy', optimizer='adam',
                  metrics=[])

    a = np.random.randint(1,20000,size=(10000))
    b = np.random.randint(1, 10000, size=(10000))
    y = np.random.randint(0, 2, size=(10000))
    X = [a, b]
    model.fit(X, y, epochs=1, batch_size=32)

當我運行上面的代碼時,我得到

TypeError:“NoneType”類型的 object 沒有 len()。

我使用 Tensorflow 2.0.0,python 3.6

錯誤

我將 Tensorflow 版本降級為2.0.0並運行產生相同錯誤的代碼。

當我升級到2.4.1版時,它工作得非常好。

您可以像這樣升級 Tensorflow:

pip install tensorflow==2.4.1

解決方案是刪除最后一層的 tf.squeeze() 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM