Когда я пытаюсь обучить эту модель, и у этой модели даже нет многих обучаемых параметров, в Google Colab происходит сбой, потому что она использует всю оперативную память, у меня есть набор данных mp3-файлов, каждый mp3-файл имеет скорость 128 кбит/с и Продолжительность 3-4 секунды, и я пытаюсь сделать аудиоклассификатор, но он просто не работает, для обучения требуется слишком много оперативной памяти, а обучение происходит медленно. Может ли кто-нибудь мне помочь, пожалуйста? Я использую tensorflow 2.10.0 и tensorflow-io 0.27.0, потому что с более новыми версиями другие проблемы
import tensorflow as tf
import tensorflow_io as tfio
import os
import random
import joblib
BATCH_SIZE = 4
def load_sound(filename):
res = tfio.audio.AudioIOTensor(filename, dtype=tf.float32)
tensor = res.to_tensor()
tensor = tf.math.reduce_sum(tensor,axis = 1) / 2
sample_rate = res.rate
sample_rate = tf.cast(sample_rate, dtype=tf.int64)
wav = tfio.audio.resample(tensor, rate_in=sample_rate, rate_out=16000)
return wav
base_dir = '/content/drive/MyDrive/house_sounds/sound_data'
folders = ['door', 'voice', 'glass', 'footsteps']
files = []
for folder in folders:
folder_path = os.path.join(base_dir, folder)
file_paths = tf.data.Dataset.list_files(os.path.join(folder_path, '*.mp3'))
files.append(file_paths)
door = tf.data.Dataset.zip((files[0], tf.data.Dataset.from_tensor_slices(tf.fill([len(files[0])],0))))
voice = tf.data.Dataset.zip((files[1], tf.data.Dataset.from_tensor_slices(tf.fill([len(files[1])],1))))
glass = tf.data.Dataset.zip((files[2], tf.data.Dataset.from_tensor_slices(tf.fill([len(files[2])],2))))
footsteps = tf.data.Dataset.zip((files[3], tf.data.Dataset.from_tensor_slices(tf.fill([len(files[3])],3))))
data = door.concatenate(voice)
data = data.concatenate(glass)
data = data.concatenate(footsteps)
def create_spectrogram(file_path, label):
wav = load_sound(file_path)
wav = wav[:48000]
zero_padding = tf.zeros([48000] - tf.shape(wav), dtype=tf.float32)
wav = tf.concat([zero_padding, wav], 0)
spectrogram = tf.signal.stft(wav, frame_length=320, frame_step=32)
spectrogram = tf.abs(spectrogram)
spectrogram = tf.expand_dims(spectrogram, axis=2)
return spectrogram, label
data = data.map(create_spectrogram)
data = data.cache()
data = data.shuffle(buffer_size = 1000)
data = data.batch(4)
data = data.prefetch(8)
print('Len: ',len(data))
train = data.take(1600)
test = data.skip(1600).take(247)
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, Dense, Flatten, MaxPooling2D
model = Sequential([
Conv2D(16, (2,2), activation="relu", input_shape=(1491,257,1)),
MaxPooling2D(pool_size=(5, 5)),
Conv2D(32, (2, 2), activation='relu'),
MaxPooling2D(pool_size=(5, 5)),
Conv2D(64, (3, 3), activation='relu'),
MaxPooling2D(pool_size=(5, 5)),
Flatten(),
Dense(32, activation='relu'),
Dense(4, activation="softmax")
])
model.compile(
optimizer='Adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(),
metrics=['accuracy']
)
model.summary()
hist = model.fit(train, epochs=5, validation_data=test)
Подробнее здесь: https://stackoverflow.com/questions/792 ... ogle-colab
Модель Tensorflow занимает так много оперативной памяти в Google Colab ⇐ Python
Программы на Python
1733081718
Anonymous
[b]Когда я пытаюсь обучить эту модель, и у этой модели даже нет многих обучаемых параметров, в Google Colab происходит сбой, потому что она использует всю оперативную память, у меня есть набор данных mp3-файлов, каждый mp3-файл имеет скорость 128 кбит/с и Продолжительность 3-4 секунды, и я пытаюсь сделать аудиоклассификатор, но он просто не работает, для обучения требуется слишком много оперативной памяти, а обучение происходит медленно. Может ли кто-нибудь мне помочь, пожалуйста? Я использую tensorflow 2.10.0 и tensorflow-io 0.27.0, потому что с более новыми версиями другие проблемы[/b]
import tensorflow as tf
import tensorflow_io as tfio
import os
import random
import joblib
BATCH_SIZE = 4
def load_sound(filename):
res = tfio.audio.AudioIOTensor(filename, dtype=tf.float32)
tensor = res.to_tensor()
tensor = tf.math.reduce_sum(tensor,axis = 1) / 2
sample_rate = res.rate
sample_rate = tf.cast(sample_rate, dtype=tf.int64)
wav = tfio.audio.resample(tensor, rate_in=sample_rate, rate_out=16000)
return wav
base_dir = '/content/drive/MyDrive/house_sounds/sound_data'
folders = ['door', 'voice', 'glass', 'footsteps']
files = []
for folder in folders:
folder_path = os.path.join(base_dir, folder)
file_paths = tf.data.Dataset.list_files(os.path.join(folder_path, '*.mp3'))
files.append(file_paths)
door = tf.data.Dataset.zip((files[0], tf.data.Dataset.from_tensor_slices(tf.fill([len(files[0])],0))))
voice = tf.data.Dataset.zip((files[1], tf.data.Dataset.from_tensor_slices(tf.fill([len(files[1])],1))))
glass = tf.data.Dataset.zip((files[2], tf.data.Dataset.from_tensor_slices(tf.fill([len(files[2])],2))))
footsteps = tf.data.Dataset.zip((files[3], tf.data.Dataset.from_tensor_slices(tf.fill([len(files[3])],3))))
data = door.concatenate(voice)
data = data.concatenate(glass)
data = data.concatenate(footsteps)
def create_spectrogram(file_path, label):
wav = load_sound(file_path)
wav = wav[:48000]
zero_padding = tf.zeros([48000] - tf.shape(wav), dtype=tf.float32)
wav = tf.concat([zero_padding, wav], 0)
spectrogram = tf.signal.stft(wav, frame_length=320, frame_step=32)
spectrogram = tf.abs(spectrogram)
spectrogram = tf.expand_dims(spectrogram, axis=2)
return spectrogram, label
data = data.map(create_spectrogram)
data = data.cache()
data = data.shuffle(buffer_size = 1000)
data = data.batch(4)
data = data.prefetch(8)
print('Len: ',len(data))
train = data.take(1600)
test = data.skip(1600).take(247)
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, Dense, Flatten, MaxPooling2D
model = Sequential([
Conv2D(16, (2,2), activation="relu", input_shape=(1491,257,1)),
MaxPooling2D(pool_size=(5, 5)),
Conv2D(32, (2, 2), activation='relu'),
MaxPooling2D(pool_size=(5, 5)),
Conv2D(64, (3, 3), activation='relu'),
MaxPooling2D(pool_size=(5, 5)),
Flatten(),
Dense(32, activation='relu'),
Dense(4, activation="softmax")
])
model.compile(
optimizer='Adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(),
metrics=['accuracy']
)
model.summary()
hist = model.fit(train, epochs=5, validation_data=test)
Подробнее здесь: [url]https://stackoverflow.com/questions/79242350/tensorflow-model-takes-so-much-ram-in-google-colab[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия