Попытка использовать неинициализированное значение density_1 / смещение Tensorflow - PullRequest
0 голосов
/ 06 февраля 2019

Я разрабатываю систему распознавания звука, используя модель keras, а затем использую tenorflow, чтобы преобразовать ее в модель, которую можно использовать на Android.Код ниже.X_data и Y_data в коде являются двоичными кодами и имеют 2 функции: 40 значений, которые представляют MFCC звука и его метку.

import numpy as np
import pandas as pd
import os
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation, Flatten
from keras.optimizers import Adam
from keras.utils import np_utils
from sklearn import model_selection as ms
from sklearn import preprocessing
import librosa
import h5py
import tensorflow as tf

X_data = np.load('C:\\Users\colew\oneDrive\Desktop\X.npy')
Y_data = np.load('C:\\Users\colew\oneDrive\Desktop\Y.npy')

X=np.array(X_data.tolist())
Y=np.array(Y_data.tolist())
lb=preprocessing.LabelEncoder()
yy=np_utils.to_categorical(lb.fit_transform(Y_data))

aTrain,aTest,bTrain,bTest=ms.train_test_split(X_data,yy,test_size=0.2)

num_labels = yy.shape[1]
filter_size = 2

# build model
model = Sequential()

model.add(Dense(256, input_shape=(40, )))
model.add(Activation('relu'))
model.add(Dropout(0.5))
'''
model.add(Dense(256, input_shape=(40, )))
model.add(Activation('relu'))
model.add(Dropout(0.5))

model.add(Dense(256, input_shape=(40, )))
model.add(Activation('relu'))
model.add(Dropout(0.5))
'''
model.add(Dense(num_labels, input_shape = (10, )))
model.add(Activation('softmax'))

model.compile(loss='categorical_crossentropy', metrics=['accuracy'], optimizer='adam')
model.fit(aTrain, bTrain, epochs=100, validation_data=(aTest, bTest))

model.save("SDmodel.h5")

# Save tf.keras model in HDF5 format.
keras_file = "keras_model.h5"
tf.keras.models.save_model(model, keras_file)

# Convert to TensorFlow Lite model.
converter = tf.lite.TFLiteConverter.from_keras_model_file(keras_file)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

Вот пример набора кода, предоставленного tenorflow, который работает и выполняет нечто подобное

import numpy as np
import tensorflow as tf

# Generate tf.keras model.
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(2, input_shape=(3,)))
model.add(tf.keras.layers.RepeatVector(3))
model.add(tf.keras.layers.TimeDistributed(tf.keras.layers.Dense(3)))
model.compile(loss=tf.keras.losses.MSE,
              optimizer=tf.keras.optimizers.RMSprop(lr=0.0001),
              metrics=[tf.keras.metrics.categorical_accuracy],
              sample_weight_mode='temporal')

x = np.random.random((1, 3))
y = np.random.random((1, 3, 3))
model.train_on_batch(x, y)
model.predict(x)

# Save tf.keras model in HDF5 format.
keras_file = "keras_model.h5"
tf.keras.models.save_model(model, keras_file)

# Convert to TensorFlow Lite model.
converter = tf.lite.TFLiteConverter.from_keras_model_file(keras_file)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

Этот код работает отлично.Тем не менее, у меня возникли некоторые проблемы после того, как он успешно сохранил модель и столкнулся с преобразованием части.В частности, я сталкиваюсь с проблемой, в частности, в коде

tf.keras.models.save_model(model, keras_file)

, где я получаю ошибки

Traceback (most recent call last):
  File "C:/Users/colew/PycharmProjects/SDModel/SDSoundRecognitionSystem.py", line 77, in <module>
    tf.keras.models.save_model(model, keras_file)
  File "C:\Users\colew\PycharmProjects\SDModel\venv\python35\lib\site-packages\tensorflow\python\keras\saving\hdf5_format.py", line 108, in save_model
    save_weights_to_hdf5_group(model_weights_group, model_layers)
  File "C:\Users\colew\PycharmProjects\SDModel\venv\python35\lib\site-packages\tensorflow\python\keras\saving\hdf5_format.py", line 699, in save_weights_to_hdf5_group
    weight_values = K.batch_get_value(symbolic_weights)
  File "C:\Users\colew\PycharmProjects\SDModel\venv\python35\lib\site-packages\tensorflow\python\keras\backend.py", line 2777, in batch_get_value
    return get_session().run(tensors)
  File "C:\Users\colew\PycharmProjects\SDModel\venv\python35\lib\site-packages\tensorflow\python\client\session.py", line 930, in run
    run_metadata_ptr)
  File "C:\Users\colew\PycharmProjects\SDModel\venv\python35\lib\site-packages\tensorflow\python\client\session.py", line 1153, in _run
    feed_dict_tensor, options, run_metadata)
  File "C:\Users\colew\PycharmProjects\SDModel\venv\python35\lib\site-packages\tensorflow\python\client\session.py", line 1329, in _do_run
    run_metadata)
  File "C:\Users\colew\PycharmProjects\SDModel\venv\python35\lib\site-packages\tensorflow\python\client\session.py", line 1349, in _do_call
    raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value dense_1/bias
     [[node dense_1/bias/read (defined at \Users\colew\PycharmProjects\SDModel\venv\python35\lib\site-packages\keras\backend\tensorflow_backend.py:402) ]]

Я не совсем уверен, где проблема, но я предполагаю, так какв ошибке есть плотность_1, она имеет отношение к первой ссылке на плотную.Любая информация может быть полезной.Спасибо!

1 Ответ

0 голосов
/ 06 февраля 2019

Вы используете последовательную модель из keras, в то время как пример кода использует tf.keras.Это может быть проблемой.У меня тоже были проблемы с этим раньше ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...