Keras预测函数的问题

aydmsdu9  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(494)

我已经训练了LSTM模型,并将模型保存在我的驱动器中。我上传了模型,当我使用model.predict时,我会遇到问题,但它以前工作时没有问题。真正奇怪的是,它在我的笔记本电脑上工作正常,但在谷歌colab上却不行。

2 frames
/usr/local/lib/python3.7/dist-packages/keras/engine/training.py in predict(self, x, batch_size, verbose, steps, callbacks, max_queue_size, workers, use_multiprocessing)
   2046             callbacks.on_predict_batch_end(end_step, {'outputs': batch_outputs})
   2047       if batch_outputs is None:
-> 2048         raise ValueError('Unexpected result of `predict_function` '
   2049                          '(Empty batch_outputs). Please use '
   2050                          '`Model.compile(..., run_eagerly=True)`, or '

ValueError: Unexpected result of `predict_function` (Empty batch_outputs). Please use `Model.compile(..., run_eagerly=True)`, or `tf.config.run_functions_eagerly(True)` for more information of where went wrong, or file a issue/bug to `tf.keras`.

这就是我如何使用模型。预测

test_predictions = np.argmax(model.predict(X, verbose=0) > 0.5, axis=-1)
jjhzyzn0

jjhzyzn01#

模型需要初始化,您可以执行model.compiled(),这是一个很好的步骤,仅在有时Tensorflow加载权重而不初始化值,或者您可以使用model.fit(),这将防止错误。
对于我的例子,自定义层告诉您如何在层内生成权重,这需要与优化器和工作程序的参数相匹配。
对于机器工程或构建机器人,他们使用小工具来理解数字和矩阵,没有安装包含第三方应用程序的Tensorflow,下一个Web平台实现他们构建Java版本,但这就是为什么我不安装在他们复制和恢复的通信设备上。
示例:用形状和数据类型初始化的权重(不同版本可能支持不同的数据类型)

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
: Class
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""
class MyLSTMLayer( tf.keras.layers.LSTM ):
    def __init__(self, units, return_sequences, return_state):
        super(MyLSTMLayer, self).__init__( units, return_sequences=return_sequences, return_state=return_state )
        self.num_units = units
        self.return_sequences = return_sequences
        self.return_state = return_state

    def build(self, input_shape):
        self.w = self.add_weight(
            shape=(input_shape[-1], self.units),
            initializer="random_normal",
            trainable=True,
        )
        self.b = self.add_weight(
            shape=(self.units,), initializer="random_normal", trainable=True
        )

    def call(self, inputs):
        return tf.matmul(inputs, self.w) + self.b

样品:在机器上运行的最终产品

temp = tf.random.normal([10], 1, 0.2, tf.float32)
temp = np.asarray(temp) * np.asarray([ coefficient_0, coefficient_1, coefficient_2, coefficient_3, coefficient_4, coefficient_5, coefficient_6, coefficient_7, coefficient_8, coefficient_9 ]) #action = actions['up']
temp = tf.nn.softmax(temp)
action = int(np.argmax(temp))

输出:操作反馈响应系统。~!x1c 0d1x

相关问题