Добавление регуляризаторов к слою создает ошибки во время обучения с переменной, определенной при построении графика слоPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Добавление регуляризаторов к слою создает ошибки во время обучения с переменной, определенной при построении графика сло

Сообщение Anonymous »

Я начинаю очень небольшой проект в блокноте Google Colab. Я начал с найденного мной примера, который сделал что-то близкое к тому, что я хотел. При изменении кода у меня возникла непонятная ошибка.
В качестве примера я сделал небольшую модель. Он имеет небольшой слой, который использует переменную «num_features» для добавления в график. Оно работает. Если я добавлю регуляризатор (здесь он бесполезен, но был полезен в более крупной модели, которую я пытался реализовать), я получаю ошибку, но ошибка сообщает мне, что он потерял переменную «num_features».

Код: Выделить всё

!pip install --upgrade tensorflow
import tensorflow as tf
!pip install --upgrade keras

import os
import glob
import numpy as np
from tensorflow import data as tf_data

import keras
from keras import ops
from keras import layers

def subnet(inputs, num_features):

bias = keras.initializers.Constant(np.eye(num_features).flatten())
reg = keras.regularizers.OrthogonalRegularizer(factor=0.001, mode='rows')
x = layers.Dense(
num_features * num_features,
kernel_initializer="zeros",
bias_initializer=bias,
activity_regularizer=reg,
)(inputs)

return x

inputs = keras.Input(shape=(784,))
x = layers.Dense(64, activation="relu")(inputs)
x = subnet(x,8)

outputs = layers.Dense(10)(x)
model = keras.Model(inputs=inputs, outputs=outputs, name="example_model")
model.summary()

(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()

x_train = x_train.reshape(60000, 784).astype("float32") / 255
x_test = x_test.reshape(10000, 784).astype("float32") / 255

model.compile(
loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
optimizer=keras.optimizers.RMSprop(),
metrics=["accuracy"],
)

history = model.fit(x_train, y_train, batch_size=64, epochs=2, validation_split=0.2)

Я получаю следующую ошибку:

Код: Выделить всё

TypeError                                 Traceback (most recent call last)

 in ()
10 )
11
---> 12 history = model.fit(x_train, y_train, batch_size=64, epochs=2, validation_split=0.2)

1 frames

/usr/local/lib/python3.10/dist-packages/keras/src/backend/tensorflow/numpy.py in eye(N, M, k, dtype)
2363         M = N
2364     # Making sure N, M and k are `int`
-> 2365     N, M, k = int(N), int(M), int(k)
2366     if k >= M or -k >= N:
2367         # tf.linalg.diag will raise an error in this case

TypeError: Exception encountered when calling Functional.call().

int() argument must be a string, a bytes-like object or a real number, not 'NoneType'

Arguments received by Functional.call():
• inputs=tf.Tensor(shape=(None, 784), dtype=float32)
• training=False
• mask=None
Аргумент глаза — это num_features, которые я явно определил при создании графика слоя. Если я удалю Activity_regulariser, я вообще не получу ошибок. Почему содержимое num_features изменяется во время обучения?

Подробнее здесь: https://stackoverflow.com/questions/787 ... iable-defi
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»