问题标签 [tf.keras]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Tensorflow:tflite 模型和输出数组的不兼容形状
我正在遵循一个非常基本的 tf.keras 教程来构建二进制图像分类器。然后我将完成的模型转换为 .tflite 文件,我正试图将其合并到一个 android 应用程序中。
创建顺序 tf.keras 模型的代码。
代码转换为 tflite 模型:
然后我在模型上调用“运行”,传入 ByteBuffer(要分类的图像)和输出数组。
输出数组:
但是,当我打电话时,tflite.run(imgData, labelProbArray);
我收到了一个错误。
java.lang.IllegalArgumentException: Cannot copy between a TensorFlowLite tensor with shape [1, 1] and a Java object with shape [1, 2].
张量也应该具有 [1,2] 形状吗?或者有没有其他方法可以让我返回预测的类别和概率?
tensorflow - 在 keras.sequential 模型中使用 keras.layers.Add()
使用 TF 2.0 和 tfp 概率层,我构建了一个keras.sequential
模型。我想将其导出以使用 TensorFlow Serving 进行服务,并且我想在 servable 中包含预处理和后处理步骤。
我的预处理步骤相当简单——用显式值填充 NA,将一些字符串编码为浮点数,规范化输入和非规范化输出。对于培训,我一直在使用 pandas 和 numpy 进行前/后处理。
我知道我可以导出我的 Keras 模型的权重,将keras.sequential
模型的架构包装在一个更大的 TensorFlow 图中,使用低级操作tf.math.subtract(inputs, vector_of_feature_means)
来进行预处理/后处理操作,定义tf.placeholders
我的输入和输出,并制作一个可服务的,但我觉得就像必须有一种更清洁的方式来做到这一点。
是否可以在模型中使用keras.layers.Add()
和进行显式预处理步骤,还是有一些更标准的方法来做这些事情?keras.layers.Multiply()
keras.sequence
python - ValueError:检查输入时出错:预期dense_18_input的形状为(784,)但得到的数组形状为(1,)
我正在用 tf.data 测试 tf.keras,所以我可以进行小批量优化。我正在使用 MNIST 数据集,并且正在 Google Colab 中运行代码。但是,当我尝试训练网络时,总是会收到此错误:
ValueError: Error when checking input: expected dense_18_input to have shape (784,) but got array with shape (1,)
. 这是我的代码:
我不知道问题是什么。我认为我的尺寸是正确的,我看不到任何其他问题。我该如何解决这个问题?
编辑:我查看了更多/测试的东西来找到答案,但我找不到任何有效的东西。我完全不知道问题可能是什么。
python - keras.module.load_model raise TypeError('关键字参数不理解:', kwarg)
我正在尝试使用 Keras 和例如在 tf. 训练效果很好,我进行了预测,但我无法保存模型以供将来使用,所以我必须每次都进行训练。
我正在使用 python 3.7 和 Keras 的最新更新开发 MACOS Mojave,已经执行了 pip --upgrade keras。
model.save() 似乎工作正常,文件flower_model.h5 在目录中正确创建但运行 load_model() 时输出错误是:
我想在不同的脚本中加载模型,以便我可以执行检测,我不确定是否应该在加载模型之前初始化一些东西。感谢您花时间阅读我的问题。
tensorflow - AttributeError:该层从未被调用,因此没有定义的输入形状
我试图通过创建三个类来在 TensorFlow 2.0 中构建一个自动编码器:编码器、解码器和自动编码器。由于我不想手动设置输入形状,我试图从编码器的 input_shape 推断解码器的输出形状。
由于编码器的输入形状用于解码器的构建功能,我希望当我训练自动编码器时,首先构建编码器,然后构建解码器,但情况似乎并非如此。我还尝试通过self.encoder.build()
在解码器的构建函数开始时调用来在解码器的构建函数中构建编码器,但这没有任何区别。我究竟做错了什么?
我收到的错误:
python - tf.keras 损失变为 NaN
我正在 tf.keras 中编写一个有 3 层的神经网络。我的数据集是 MNIST 数据集。我减少了数据集中的示例数量,因此运行时间更低。这是我的代码:
每当我运行它时,都会发生以下三件事之一:
在几个 epoch 内损失减少并且准确度增加,直到损失无明显原因变为 NaN 并且准确度直线下降。
每个时期的损失和准确性保持不变。通常损失为2.3025,准确度为0.0986。
损失从 NaN 开始(并一直保持这种状态),而准确度仍然很低。
大多数时候,模型会做这些事情之一,但有时它会做一些随机的事情。似乎发生的不稳定行为类型是完全随机的。我不知道问题是什么。我该如何解决这个问题?
编辑:有时,损失会减少,但准确性保持不变。此外,有时损失减少而准确度增加,然后过一段时间准确度降低而损失仍然减少。或者,损失减少,准确度增加,然后切换,损失迅速上升,而准确度下降,最终以损失结束:2.3025 acc:0.0986。
编辑2:这是有时会发生的事情的一个例子:
编辑 3:我将损失更改为均方误差,现在网络运行良好。有没有办法让它保持交叉熵而不收敛到局部最小值?
python - 如何从预训练模型中删除最后一层。我试过 model.layers.pop() 但它不工作
我正在尝试删除最后一层,以便可以使用转移学习。
但是我得到的输出不是我所期望的。它仍然显示 vgg16 模型的最后一层。
这是输出
注意- 在输出中我没有显示整个模型,只显示了前几层和最后一层。
我应该如何删除最后一层进行迁移学习?
PS Keras 版本 = 2.2.4
tensorflow - 如何为从 keras 模型创建的估计器构建输入函数
我正在从 keras 模型创建一个估计器,如下所示
我的模型就像
然后我尝试为估计器创建一个 input_fn
但是有一个错误
看起来 {'main_input'} 是 keras 模型中的输入名称 {'TURNOVER', 'VOLUME', 'CLOSE', 'P_CHANGE', 'OPEN', 'PRICE_CHANGE', 'LOW', 'HIGH'} 是特征来自我的数据集,因此它们彼此不匹配。有谁知道如何转换这个?
tensorflow - tensorflow 中的简单 LSTM 实现:考虑将元素转换为支持的类型错误
我正在尝试在 Tensorflow 上实现一个简单的 LSTM 单元,以将其性能与我之前实现的另一个单元进行比较。
我使用了我在 GitHub 上找到的示例并尝试对其进行更改以获得我想要的行为,但我收到了以下错误消息:
tensorflow - keras.load_model() 无法识别 Tensorflow 的激活函数
tf.keras.save_model
我使用函数保存了一个 tf.keras 模型。为什么tf.keras.load_model
抛出异常?
代码示例:
我希望这段代码能够加载模型,但它会引发异常: