OCaml中是否存在整数取幂的函数?**仅适用于花车.虽然看起来大部分都是准确的,但是不存在精确错误的可能性,例如2.**3. = 8.有时会返回错误?是否有用于整数求幂的库函数?我可以写自己的,但效率问题就出现了,如果没有这样的功能我也会感到惊讶.
我一直在阅读这篇文章:http://en.wikipedia.org/wiki/Function_pointer,我有点困惑.由于C/C++支持函数指针,这是否意味着它们通常支持函数式编程?请注意,我实际上并不想使用C或C++进行函数式编程,但我很好奇,因为我从未听说过C或C++支持这样的事情.(我知道C语言中存在许多函数式编程语言的编译器,但这并不是我所说的"支持").
自从我编写OCaml以来已经有一段时间了,我遇到了这个听起来很简单的问题,但我遇到了解决问题的心理障碍:
编写一个函数,该函数接受一个f带有可变数量参数的函数,该函数返回一个布尔值(即f类型'a -> 'b -> 'c -> ... -> bool)并返回一个g表示否定的函数f(即(f x1 x2 .. xn) == not (g x1 x2 .. xn)对于所有有效参数集).
它的灵感来自以下代码块,它解决了Javascript中的问题:
function negate(func) {
return function() {
return !func.apply(null, arguments);
};
}
Run Code Online (Sandbox Code Playgroud)
(来自http://eloquentjavascript.net/1st_edition/chapter6.html)
但是,我没有看到在OCaml中实现此方法的方法("arguments"关键字或等效项不可用),因为该函数f没有预设数量的参数.我找到了关于处理具有可变数量参数的函数的链接(例如https://blogs.janestreet.com/variable-argument-functions/),但我想知道是否有更简单/更自然的'处理这个具体问题的方法.
我正在尝试将不同长度的张量列表保存到TFRecords文件中,以便以后可以轻松加载它们.所讨论的张量是一维整数数组.
原因是张量是处理大文本文件的结果.这个文件非常大,处理速度很慢,所以每次我想运行算法时都不想重复这个步骤.我最初想过将文本文件加载到常规的Python列表或numpy数组中,然后将它们腌制,但是从这些列表到张量的转换本身需要很长时间,所以我不想每次都要等到运行我的脚本.似乎张量不能直接腌制,即使有一些解决方法,我也认为TFRecords是保存张量数据的"正确"方法.
但是,我不确定如何将张量正确保存到TFRecords文件中,然后将它们作为张量加载回来.我确实通过了TensorFlow教程,其中MNIST数据被保存到TFRecords文件然后加载,但是它和我的用例之间存在一些差异.
以下是一个代码块,旨在复制我在一个更简单的情况下遇到的问题.
import tensorflow as tf
def _int64_list_feature(values):
return tf.train.Feature(int64_list=tf.train.Int64List(value=values))
filename = "/Users/me/tensorflow/test.tfrecords"
writer = tf.python_io.TFRecordWriter(filename)
example = tf.train.Example(features=tf.train.Features(feature={'datalist': _int64_list_feature([2,3])}))
writer.write(example.SerializeToString())
example = tf.train.Example(features=tf.train.Features(feature={'datalist': _int64_list_feature([8,5,7])}))
writer.write(example.SerializeToString())
writer.close()
Run Code Online (Sandbox Code Playgroud)
前几行是标准的.我将两个1-D张量写入TFRecords文件,一个长度为2,另一个长度为3.
def read_my_file(filename_queue):
reader = tf.TFRecordReader()
_, serialized_example = reader.read(filename_queue)
features = tf.parse_single_example(serialized_example, features={'datalist': tf.VarLenFeature(tf.int64), })
datalist = features['datalist']
return datalist
Run Code Online (Sandbox Code Playgroud)
您似乎应该使用的辅助函数.我不是百分之百确定为什么这是必要的,但如果不写这个就无法让它工作,并且所有的例子都有这样的东西.在我的情况下,数据是未标记的,所以我没有标签变量.
filename_queue = tf.train.string_input_producer([filename], 2)
datalists = read_my_file(filename_queue)
datalists_batch = tf.train.batch([datalists], batch_size=2)
Run Code Online (Sandbox Code Playgroud)
来自示例的更多"样板"式代码.批量大小为2,因为此代码中只有2个示例.
datalists_batch现在将是一个包含我的向量的稀疏张量,[2, 3]并且[8, 5, 7]第一个在第二个之上.因此,我想将它们分解为单独的张量.在这一点上,我已经担心这个运行时间也可能很长,因为在我的实际代码中有超过100,000个单独的张量将被拆分.
split_list = tf.sparse_split(0, 2, datalists_batch)
sp0 = split_list[0] …Run Code Online (Sandbox Code Playgroud) 当我尝试访问我的网站时,它给了我以下内容:使用mysite.urls中定义的URLconf,Django按以下顺序尝试了这些URL模式:^ admin /当前URL,与这些中的任何一个都不匹配.
如果我去网站并附加/ admin,它会将我带到管理页面.如果我注释掉启用管理员的行,它可以正常工作.我如何得到两者?urlpatterns中的第一个模式是'',所以当我启用管理员时,我不明白为什么会混淆.(注意:我只是在做教程.)
from django.conf.urls import patterns, include, url
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
#url(r'^$', 'mysite.views.home', name='home'),
# url(r'^x/', include('mysite.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
)
Run Code Online (Sandbox Code Playgroud)