- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
总结:使用新的 tf.contrib.data.Dataset 使我的图形 protobuff 文件的大小加倍,我无法在 Tensorboard 中可视化图形。
详情:
我正在试用新的 TensorFlow tf.contrib.data.Dataset
功能与 tf.contrib.learn.Experiment
一起框架。我的输入数据定义为 input functions它返回特征和标签的张量。
如果我用 tf.train.slice_input_producer
创建我的输入函数功能类似于以下代码块(完整代码 here),那么我生成的 graph.pbtxt
文件大小为 620M,.meta
文件大小约为 165M。
def train_inputs():
with tf.name_scope('Training_data'):
x = tf.constant(mnist.train.images.reshape([-1, 28, 28, 1]))
y = tf.constant(mnist.train.labels)
sliced_input = tf.train.slice_input_producer(
tensor_list=[x, y], shuffle=True)
return tf.train.shuffle_batch(
sliced_input, batch_size=batch_size,
capacity=10000, min_after_dequeue=batch_size*10)
现在,如果我使用新的 tf.contrib.data.Dataset.from_tensor_slices
创建我的输入函数就像在下面的代码块(完整代码 here )中一样,然后我生成的 graph.pbtxt
文件的大小加倍到 1.3G,.meta
文件的大小加倍到 330M .
def train_inputs():
with tf.name_scope('Training_data'):
images = mnist.train.images.reshape([-1, 28, 28, 1])
labels = mnist.train.labels
dataset = tf.contrib.data.Dataset.from_tensor_slices(
(images, labels))
dataset = dataset.repeat(None) # Infinite
dataset = dataset.shuffle(buffer_size=10000)
dataset = dataset.batch(batch_size)
iterator = dataset.make_one_shot_iterator()
next_example, next_label = iterator.get_next()
return next_example, next_label
现在因为 graph.pbtxt
文件太大,TensorBoard 需要很长时间来解析这个文件,我无法直观地调试我的模型图。我在 Dataset documentation 中找到这种大小的增加来自:“数组的内容将被复制多次” 和 solution将是使用占位符。但是,在这种情况下,我需要将 numpy 数组输入到具有事件 session 的占位符中以初始化迭代器:
sess.run(iterator.initializer, feed_dict={features_placeholder: features, labels_placeholder: labels})
然而,在使用 tf.contrib.learn.Experiment
框架时,这似乎超出了我的控制范围。
如何使用 Experiment 框架初始化迭代器的初始化程序?或者在不增加图形大小的情况下找到使用数据集 API 的解决方法?
最佳答案
我使用 tf.train.SessionRunHook
找到了解决我的问题的方法.我创建了一个 SessionRunHook
对象,它在创建 session 后初始化迭代器:
class IteratorInitializerHook(tf.train.SessionRunHook):
def __init__(self):
super(IteratorInitializerHook, self).__init__()
self.iterator_initiliser_func = None
def after_create_session(self, session, coord):
self.iterator_initiliser_func(session)
初始化函数在创建数据集迭代器时设置:
iterator_initiliser_hook.iterator_initiliser_func = \
lambda sess: sess.run(
iterator.initializer,
feed_dict={images_placeholder: images,
labels_placeholder: labels})
我将 Hook 对象传递给 tf.contrib.learn.Experiment
的 train_monitors
和 eval_hooks
参数。
生成的 graph.pbtxt
文件现在只有 500K,而 .meta
文件只有 244K。
关于python - Tensorflow Dataset API 将图形 protobuff 文件大小加倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45549251/
我正在使用 protobuf-csharp-port 库以文本形式写入和读取消息。 我可以使用以下代码以文本形式编写消息,但我找不到任何示例来说明如何将此消息读回到原型(prototype) buff
在尝试使用以下命令编译名为 UserOptions.proto 的 proto 文件时,该文件具有名为 Account.proto 的导入 protoc --proto_path=/home/proj
考虑以下消息。 message example { repeated string text; } 假设在 C++ 中,我将一个字符串列表插入到示例的文本字段中: exemple aMessag
我正在研究从数据库中获取数据并构造 protobuff 消息的东西。鉴于可以从数据库中为某些字段获取空值的可能性,我将在尝试构造 protobuff 消息时得到空指针异常。从线程 http://cod
我遇到了错误 The type cannot be changed once a serializer has been generated 尝试使用 Protobuff.net 进行序列化时。我已设
我有一个 protoBuff3 规范,看起来像 message MSG { string name = 1; repeated string data = 2; } 还有一个设置“MSG.
自从我注意到 MapStruct 已更新以与 Protobuff 及其构建器交互,我考虑迁移我们的服务以完全使用 MapStruct。 然而,我们仍在编写到 protobuff 消息的手动转换,因为考
为什么 ProtoBuff.Net 不支持null? 我正在浏览 ProtoBuf,想知道为什么不支持 null 值。当我们尝试分配 null 值时,它给出了异常。即使像字符串这样的 ref 也不支持
我正在使用 Squareup Wire protobuf 生成 protobuf 类图书馆 这是我的原型(prototype)文件 syntax = "proto2"; package squareu
我正在实现一个自定义协议(protocol),两个应用程序将使用该协议(protocol)相互发送各种命令(包括文件传输,即大型二进制数据 block )。经过深思熟虑,我认为 protobuff 是
我创建了一个原型(prototype)插件。当我执行时: $ protoc --plugin=protoc-gen-grpc-java=grpc-client-guice-gradle-plugin
是否可以将 grpc 中 proto3 的默认模型从 CamelCase 更改为 snake_case? 例子: 文件 anyproto.proto ... message Request { b
总结:使用新的 tf.contrib.data.Dataset 使我的图形 protobuff 文件的大小加倍,我无法在 Tensorboard 中可视化图形。 详情: 我正在试用新的 TensorF
在阅读 Netty 教程时,我发现了一个简单的 description如何集成 Netty 和 Google Protocol Buffers .我已经开始研究它的示例(因为文档中没有更多信息)并编写
正在开发一个使用 ProtoBuff 获取其内容的项目。通过在 HTML 中加载 JavaScript 使其工作一次。现在重构为使用 requirejs 来加载脚本。但是当我尝试使用脚本时,它给出一个
我有一个简单的原型(prototype)文件,用于创建我的 java 类 syntax = "proto3"; option java_package = "some.project.grpc"; o
我正在调用一个 api 来获取输入流,然后调用静态方法 parseFrom(inputstream) 将其转换为 protobuffclass。 如果我用一个特定的类来做它会起作用: public C
我们有一个使用 google 实现的 java 后端表面原型(prototype)对象。我们现在想在客户端使用 .net 中的这些对象并对其进行操作。问题是我们不想在客户端依赖谷歌的不可变原型(pro
我是 c++ 和 visual studio 2012 的新手,所以问题可能出在屏幕和椅子之间。我执行了以下步骤; 我制作了一个带有选项 optimize_for = LITE_RUNTIME 的简单
使用 Protocol Buffer 对象(序列化为字节数组)在 Android Activity 之间作为 intent extras 传递而不是在经典 POJO 上实现 Parcelable 是个
我是一名优秀的程序员,十分优秀!