尝试使用未初始化的值dense_1/bias Tens

2024-05-10 07:03:42 发布

您现在位置:Python中文网/ 问答频道 /正文

Im开发了一个使用keras模型的声音识别系统,然后使用tensorflow将其转换成可以在Android上使用的模型。代码如下。代码中的X\u数据和Y\u数据是numpy二进制文件,有两个特性: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)

下面是tensorflow提供的一组示例代码,它的工作原理和功能类似

^{pr2}$

这套代码很好用。但是,在成功保存模型并运行到转换部件后,我的系统遇到了一些问题。具体来说,我在代码中遇到了一个问题

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) ]]

我不太确定问题出在哪里,但我假设由于错误中有dense_1,它与第一次引用dense有关。任何信息都有帮助。谢谢!在


Tags: inpyimportaddmodelvenvtensorflowline