Приведенный ниже код (минимальный «игрушечный» пример, использующий генераторы данных как для обучающих, так и для проверочных данных) отлично работает в версии 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
Отображение гистограммы тензорной доски весов слоев работало в tensorflow 2.12, но не работает в версии 2.16. Это связан ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как добавить изображения в регистратор тензорной доски, используя write.add_image?
Anonymous » » в форуме Python - 0 Ответы
- 16 Просмотры
-
Последнее сообщение Anonymous
-