folgendes ich habe eine Klasse und diese rufe ich auch auf.
Ich erhalte folgenden Fehler:
Code: Alles auswählen
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-18-26d84a172398> in <module>()
1 i = 10
2
----> 3 model = NeuMF(5, num_users, num_items, i)
4 model.compile(
5 #loss=tf.keras.losses.BinaryCrossentropy(),
<ipython-input-14-6d2d92018d1b> in __init__(self, num_factors, num_users, num_items, nums_hiddens, **kwargs)
8 self.V = nn.Embedding(num_items, num_factors)
9 self.mlp = nn.Sequential()
---> 10 for num_hiddens in nums_hiddens:
11 self.mlp.add(nn.Dense(num_hiddens, activation='relu',
12 use_bias=True))
TypeError: 'int' object is not iterable
Wie kann ich diesen Fehler beheben? Habt mir jemand einen Tipp? Ich würde mich sehr über eine Antwort freuen!
Nach folgend noch mein Code:
Code: Alles auswählen
class NeuMF(nn.Block):
def __init__(self, num_factors, num_users, num_items, nums_hiddens,
**kwargs):
super(NeuMF, self).__init__(**kwargs)
self.P = nn.Embedding(num_users, num_factors)
self.Q = nn.Embedding(num_items, num_factors)
self.U = nn.Embedding(num_users, num_factors)
self.V = nn.Embedding(num_items, num_factors)
self.mlp = nn.Sequential()
for num_hiddens in nums_hiddens:
self.mlp.add(nn.Dense(num_hiddens, activation='relu',
use_bias=True))
self.prediction_layer = nn.Dense(1, activation='sigmoid', use_bias=False)
def forward(self, user_id, item_id):
p_mf = self.P(user_id)
q_mf = self.Q(item_id)
gmf = p_mf * q_mf
p_mlp = self.U(user_id)
q_mlp = self.V(item_id)
mlp = self.mlp(np.concatenate([p_mlp, q_mlp], axis=1))
con_res = np.concatenate([gmf, mlp], axis=1)
return self.prediction_layer(con_res)
model = NeuMF(5, num_users, num_items, 10)
model.compile(
#loss=tf.keras.losses.BinaryCrossentropy(),
loss=tf.keras.losses.MeanSquaredError(),
optimizer=keras.optimizers.Adam(lr=0.001)
)