![](/img/trans.png)
[英]keras sequential TypeError: object of type 'NoneType' has no 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.