Приведенный ниже код (минимальный «игрушечный» пример, использующий генераторы данных как для обучающих, так и для проверочных данных) отлично работает в версии 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
Программы на Python
1732032292
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)
Подробнее здесь: [url]https://stackoverflow.com/questions/79204195/tensorboard-histogram-display-of-layer-weights-was-working-in-tensorflow-2-12-bu[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия