问题标签 [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.
tensorflow - 使用 tf.keras 时带有大 numpy 数组的 from_tensor_slices()
我在一个 numpy 数组中有一些训练数据 - 它适合内存,但大于 2GB。我正在使用 tf.keras 和数据集 API。给你一个简化的、独立的例子:
因此,执行此操作会导致错误“无法创建内容大于 2GB 的张量原型”。该文档列出了此问题的解决方案:https ://www.tensorflow.org/guide/datasets#sumption_numpy_arrays - 只需在会话运行中使用 tf.placeholders 然后 feed_dict 。
现在主要的问题是:如何用 tf.keras 做到这一点?当我调用 model.fit() 时,我无法为占位符提供任何东西,事实上,当我引入占位符时,我收到错误消息,说“你必须为占位符张量提供一个值”。
tensorflow - Q 关于“超网络”tape.gradient 来自 F. Chollet 为研究人员编写的 tf.keras:速成课程
这是原始 colab 笔记本的 URL:
https://colab.research.google.com/drive/17u-pRZJnKN0gO5XZmq8n5A2bKGrfKEUg#scrollTo=xEuWqzjlPobA
滚动到“现在快速研究示例:超网络”的最后一个单元格:
在训练循环中,请注意:
在外面:
我以为这应该在里面?如果有人可以保证这是正确的,并且同时解释渐变胶带的情况,那就太好了。
如果你运行这个笔记本,不管代码是否正常工作,因为你可以看到每个时期的损失都下降了。
tensorflow - 直接导入 Keras 还是通过 TensorFlow 导入?我应该卸载其中一个吗?
我有一些从互联网上获得的工作 Python3 源代码,其中初始 Keras 导入是这样直接的:
在 TensorFlow 文档中,我看到了以下间接形式:
对我来说,它们似乎分别意味着,可以在不知道 TensorFlow 落后的情况下使用 Keras,并且 Keras 是(再次?)作为 TensorFlow 的一部分提供的。(我有点期待 Keras 在前一种情况下同样提供对 TensorFlow 的引用)
有什么区别?这取决于 Keras 和 TensorFlow 的安装方式,还是取决于它们的使用方式?这是我必须摆脱的潜在混乱来源吗?换句话说,我应该修复我的安装,以及如何修复?还是我应该接受有两个,并管理它们各自的用法以安全地与它们一起生活?
背景:我的安装是在 Ubuntu Linux 下,使用 Python3.5.2,其中pip3 list
显示了以下包:
顺便说一句,我已经检查过它们确实不同:
事实上,我似乎有两个不同的 Keras,前者版本更高,更丰富。
相关阅读资料,有用但不足以解决“是否需要修复?” 问题:
- 使用 TensorFlow contrib keras 时导入语句
- “import keras”和“import tensorflow.keras”有什么区别
- Keras 和 tf.keras 之间的区别:是否应该更改旧的 Keras 代码?
- 为什么keras不允许以这种方式添加卷积层?
谢谢!
tensorflow - NVIDIA V100 上的 TensorRT FP16 或 INT8 无法加速
我一直在尝试使用 trt.create_inference_graph 将我的 Keras 翻译的 Tensorflow 保存模型从 FP32 转换为 FP16 和 INT8,然后将其保存为可用于 TensorFlow 服务的格式。代码在这里 - https://colab.research.google.com/drive/16zUmIx0_KxRHLN751RCEBuZRKhWx6BsJ
但是,使用我的测试客户端运行它,我发现时间没有变化。
我将不同型号的笔记本电脑与 NVIDIA V100 32 GB 和我的 8Gb 1070 GTX 卡进行了比较。我尝试减少和增加输入形状以检查记忆效果。总的来说,我认为,除了 32 GB 内存的优势(不仅仅是加载模型,而是处理更多帧而不会耗尽内存)V100 似乎没有加速;我特别想在 FP16 模式下将速度提高一倍。不确定 Keras 是否转换了 TF 模型,或者模型的复杂性或设计是否有作用。
以下是测试详细信息https://docs.google.com/spreadsheets/d/1Sl7K6sa96wub1OXcneMk1txthQfh63b0H5mwygyVQlE/edit?usp=sharing
FP32 - V100 -无优化
FP 32 与基于 TensorFlow 的优化 - TransformGraph
没有权重或模型量化
FP ?? 使用基于 TensorFlow 的优化 - +Weight Quantized- TransformGraph
权重量化后;模型大小为 39 MB!!(从 ~149 MB)但是时间是两倍('Time for ', 10, ' is ', 1.201113224029541)
模型量化 - 不起作用(至少使用 TF Serving)
使用 NVIDIA TensorRT 优化(colab notebook)
FP16 - v100
INT 8
优化片段 https://colab.research.google.com/drive/1u79vDN4MZuq6gYIOkPmWsbghjunbDq6m
注意:运行之间存在细微差异
python - 如何将多个数据集合并为一个数据集?
假设我有 3 个 tfrecord 文件,即neg.tfrecord
, pos1.tfrecord
, pos2.tfrecord
.
我用
此代码创建 3 个 Dataset 对象。
我的批量大小是 400,包括 200 个 neg 数据、100 个 pos1 数据和 100 个 pos2 数据。如何获得所需的数据集?
我将在 keras.fit()(急切执行)中使用这个数据集对象。
我的 tensorflow 版本是 1.13.1。
之前尝试获取每个数据集的迭代器,拿到数据后手动concat,但是效率低,GPU利用率也不高。
tensorflow - keras 和 tf.keras 有什么区别?
我正在学习 TensorFlow 和 Keras。我想试试https://www.amazon.com/Deep-Learning-Python-Francois-Chollet/dp/1617294438/,它似乎是用 Keras 编写的。
将代码转换为 是否相当简单tf.keras
?
我对代码的可移植性并不感兴趣,而不是两者之间的真正区别。
tensorflow - keras v. tf.keras 顺序模型的编译命令
我一直在加快 keras 的速度,没有意识到 tf.keras 也是一个东西(对于新手来说,很容易在 python 中与导入交叉)。在尝试将脚本从 keras 转换为 tf.keras 时,似乎命令不一致?一般来说,tf.keras 是否应该遵循 keras 文档,或者它们是否存在分歧?
我的具体问题是这适用于 keras,但不适用于 tf.keras:
这给出了错误:
这似乎与 tf.keras 文档(https://www.tensorflow.org/api_docs/python/tf/keras/models/Model#compile)不一致。知道发生了什么吗?
python - 在 Ubuntu 18.04 上运行 Keras MNIST 示例 - GPU 错误
在 Ubuntu 18.04 上设置 Anaconda 2018.12 后,我正在运行以下 Keras/TensorFlow 代码。我有 Nvidia 驱动程序 390.116 和 GTX 1070 GPU。但是,当我尝试运行这个简单的 MNIST 示例时
我得到一个回溯,指出新的 NVidia 驱动程序不够新。整个回溯很长,但我认为关键是
文件“/home/christopher/anaconda3/envs/tensorflow_gpuenv/lib/python3.6/site-packages/tensorflow/python/client/session.py”,第 676 行,在init self._session = tf_session.TF_NewSessionRef(self._graph ._c_graph, opts) tensorflow.python.framework.errors_impl.InternalError: cudaGetDevice() 失败。状态:CUDA 驱动程序版本对于 CUDA 运行时版本不足
这似乎没有意义,因为这是 Ubuntu 18.04 可用的最新驱动程序。这不是早先驱动程序不足问题的重复,因为我使用的是 Nvidia 驱动程序 390.116。
python - model.summary() 在使用子类模型时无法打印输出形状
这是创建keras模型的两种方法,但是output shapes
两种方法的总结结果不同。显然,前者打印了更多信息,更容易检查网络的正确性。
输出:</p>
那么,我应该如何使用子类方法来获取output shape
summary() 呢?