Отображение гистограммы тензорной доски весов слоев работало в tensorflow 2.12, но не работает в версии 2.16. Это связанPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Отображение гистограммы тензорной доски весов слоев работало в tensorflow 2.12, но не работает в версии 2.16. Это связан

Сообщение Anonymous »

Приведенный ниже код (минимальный «игрушечный» пример, использующий генераторы данных как для обучающих, так и для проверочных данных) отлично работает в версии 2.12 и создает желаемые гистограммы смещения и веса ядра в тензорной доске как для скрытых слоев, так и для выходного слоя. В версии 2.16 и более поздних версиях я просто получаю отображение смещения выходного слоя и ядра. Я предполагаю, что это связано с переключением в tensorflow 2.16 на использование Keras версии 3, но я не могу понять, как исправить мой код, чтобы он генерировал все гистограммы. Интернет-предложения о явном написании весов с помощью tf.summary.histogram не работают, равно как и переключение на использование данных проверки напрямую, а не на использование генератора.
import numpy as np
import tensorflow as tf
from keras.utils import Sequence
from keras.models import Sequential
from keras.layers import Input
from keras.layers import Dense
import datetime

class DataGenerator(Sequence):
def __init__(self, batch_size, data_size, **kwargs):
super().__init__(**kwargs)
self.data_size = data_size
self.batch_size = batch_size

self.data = np.random.random((data_size, features+1))
self.total_samples=self.data.shape[0]
self.indexes = np.arange(self.total_samples)

def __len__(self):
return int(np.ceil(self.total_samples / self.batch_size))

def __getitem__(self, index):
batch_indexes = self.indexes[index * self.batch_size:(index + 1) * self.batch_size]
batch_data = self.data[batch_indexes]
return self.__data_generation(batch_data)

def __data_generation(self, batch_data):
x = batch_data[:, :-1]
y = batch_data[:, -1]
return x, y

if __name__ == '__main__':
features = 3
batch_size = 2

print(f"{tf.__version__=}")

model = Sequential([
Dense(20, name="twenty_unit_hidden"),
Dense(10, name="ten_unit_hidden"),
Dense(1, name="output")
])

data_gen = DataGenerator(batch_size, 10)
val_gen = DataGenerator(batch_size, 2)

log_dir = f"logs/fit/{tf.__version__}_" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")

tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1, write_graph=True, write_images=True, update_freq="epoch")

loss = tf.keras.losses.BinaryCrossentropy()
model.compile(loss=loss)

model.fit(data_gen, epochs=4, batch_size=batch_size, callbacks=[tensorboard_callback], validation_data=val_gen)


Подробнее здесь: https://stackoverflow.com/questions/792 ... ow-2-12-bu
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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