- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
TensorFlow:1.14.0
我正在尝试修改 tf.keras.applications 中的 MobileNetV2 实现以接受 uint8 输入而不是 float32。然后,我将转换添加到 float32 并重新缩放到 [-1,1] 作为模型的前几层。这个想法是让转换成为推理图的一部分,而不是必须在 TF 之外进行。
为此,以下是 mobilenet_v2.py 中相关更改的行:
if input_tensor is None:
img_input = layers.Input(shape=input_shape, dtype="uint8")
...
x = backend.cast(img_input, dtype="float32")
x *= 1 / 127.5
x -= 1.0
first_block_filters = _make_divisible(32 * alpha, 8)
x = layers.ZeroPadding2D(padding=correct_pad(backend, x, 3),
name='Conv1_pad')(x)
...
model.fit 运行没有问题,但是当我尝试使用 model.save 保存模型时,它会抛出
model.save(path.join(best_model_dir, "model.h5"))
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/network.py", line 1211, in save
saving.save_model(self, filepath, overwrite, include_optimizer, save_format)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/saving/save.py", line 113, in save_model
model, filepath, overwrite, include_optimizer)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/saving/hdf5_format.py", line 101, in save_model_to_hdf5
default=serialization.get_json_type).encode('utf8')
File "/usr/lib/python3.6/json/__init__.py", line 238, in dumps
**kw).encode(obj)
File "/usr/lib/python3.6/json/encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "/usr/lib/python3.6/json/encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/serialization.py", line 69, in get_json_type
raise TypeError('Not JSON Serializable:', obj)
TypeError: ('Not JSON Serializable:', b'\n\x04Cast\x12\x04Cast\x1a\x07input_1*\n\n\x04SrcT\x12\x020\x04*\x0e\n\x08Truncate\x12\x02(\x00*\n\n\x04DstT\x12\x020\x01')
我还尝试创建自己的 keras InputLayer,然后进行转换和重新缩放,并用它替换未修改的 MobileNetV2 模型的输入层,但最终遇到了相同的异常。
[编辑]这是我的替代方法的代码,我认为这确实是更干净的方法。但错误仍然相同。
images = layers.Input(shape=(56, 112, 3), dtype="uint8", name="input")
x = tf.keras.backend.cast(images, dtype="float32")
x *= 1 / 127.5
x -= 1.0
# Prepare the model trunk.
mobilenet = tf.keras.applications.MobileNetV2(input_shape=(56, 112, 3), include_top=False,
weights="imagenet")
mobilenet.layers.pop(0)
x = mobilenet(x)
... add output layers ...
model = tf.keras.Model(inputs=images, outputs=outputs)
[/编辑]
你知道我做错了什么吗?一旦我将输入的数据类型更改为 float32 以外的任何类型,序列化似乎就会失败。
提前致谢!
最佳答案
在输入损失函数或其他相关位置时,尝试将 .numpy()
函数用于 tf.Variable
方法。
这可能适用于前:x = backend.cast(img_input, dtype="float32").numpy()
我在从 TensorFlow: 1.4
代码更改为 TensorFlow: 2.1.0
时遇到了类似的问题,并且 .numpy()
解决了问题。我用于解决类似问题的示例代码如下:
alpha = K.variable(value=0.98, dtype="float32", name="alpha")
...
loss_weights=[alpha.numpy()] # added .numpy()
有关解决方案的更多详细信息,请参阅此处: https://github.com/tensorflow/tensorflow/issues/28799#issuecomment-739474591
关于python - 当输入的 dtype 为 uint8 时,tf.keras.Model.save 抛出 Not JSON Serialized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56804384/
我对 mongoosejs 中模型的使用感到有些困惑。 可以通过这些方式使用 mongoose 创建模型 使用 Mongoose var mongoose = require('mongoose');
我正在看 from django.db import models class Publisher(models.Model): name = models.CharField(max_len
我有自己的 html 帮助器扩展,我用这种方式 model.Reason_ID, Register.PurchaseReason) %> 这样声明的。 public static MvcHtmlS
假设模型原本是存储在CPU上的,然后我想把它移到GPU0上,那么我可以这样做: device = torch.device('cuda:0') model = model.to(device) # o
我过去读过一些关于模型的 MVC 建议,指出不应为域和 View 重用相同的模型对象;但我找不到任何人愿意讨论为什么这很糟糕。 我认为创建两个单独的模型 - 一个用于域,一个用于 View - 然后在
我正在使用pytorch构建一个像VGG16这样的简单模型,并且我已经重载了函数forward在我的模型中。 我发现每个人都倾向于使用 model(input)得到输出而不是 model.forwar
tf.keras API 中的 models 是否多余?对于某些情况,即使不使用 models,代码也能正常运行。 keras.models.sequential 和 keras.sequential
当我尝试使用 docker 镜像运行 docker 容器时遇到问题:tensorflow/serving。 我运行命令: docker run --name=tf_serving -it tensor
我有一个模型,我用管道注册了它: register_step = PythonScriptStep(name = "Register Model",
如果 View 需要访问模型中的数据,您是否认为 Controller 应: a)将模型传递给 View b)将模型的数据传递给 View c)都不;这不应该是 Controller 所关心的。让 V
我正在寻找一个可以在模型中定义的字段,该字段本质上是一个列表,因为它将用于存储多个字符串值。显然CharField不能使用。 最佳答案 您正在描述一种多对一的关系。这应该通过一个额外的 Model 进
我最近了解了 Django 中的模型继承。我使用很棒的包 django-model-utils 取得了巨大的成功。我继承自 TimeStampedModel 和 SoftDeletableModel。
我正在使用基于 resnet50 的双输出模型进行项目。一个输出用于回归任务,第二个输出用于分类任务。 我的主要问题是关于模型评估。在训练期间,我在验证集的两个输出上都取得了不错的结果: - 综合损失
我是keras的新手。现在,我将使用我使用 model.fit_generator 训练的模型来预测测试图像组。我可以使用 model.predict 吗?不确定如何使用model.predict_g
在 MVC 应用程序中,我加入了多个表并将其从 Controller 返回到 View,如下所示: | EmployeeID | ControlID | DoorAddress | DoorID |
我在使用 sails-cassandra 连接系统的 Sails 中有一个 Data 模型。数据。 Data.count({...}).exec() 返回 1,但 Data.find({...}).e
我正在使用 PrimeFaces dataTable 开发一个 jsf 页面来显示用户列表。用户存储在 Model.User 类的对象中。
我正在关注https://www.tensorflow.org/tutorials/keras/basic_classification解决 Kaggle 挑战。 但是,我不明白应该将什么样的数据输入
我是这个领域的新手。那么,你们能帮忙如何为 CNN 创建 .config 文件吗? 传递有关如何执行此操作的文档或教程将对我有很大帮助。谢谢大家。 最佳答案 这个问题对我来说没有多大意义,因为 .co
我是“物理系统建模”主题的新手。我阅读了一些基础文献,并在 Modelica 和 Simulink/Simscape 中做了一些教程。我想问你,如果我对以下内容理解正确: 符号操作是将微分代数方程组(
我是一名优秀的程序员,十分优秀!