小编hol*_*lee的帖子

Tensorflow变量范围:如果存在变量则重用

我想要一段代码,如果它不存在,则在一个范围内创建一个变量,如果它已经存在,则访问该变量.我需要它是相同的代码,因为它将被多次调用.

但是,Tensorflow需要我指定是否要创建或重用变量,如下所示:

with tf.variable_scope("foo"): #create the first time
    v = tf.get_variable("v", [1])

with tf.variable_scope("foo", reuse=True): #reuse the second time
    v = tf.get_variable("v", [1])
Run Code Online (Sandbox Code Playgroud)

我怎样才能弄清楚是否自动创建或重用它?即,我希望上面两个代码块相同并运行程序.

python tensorflow

39
推荐指数
3
解决办法
5万
查看次数

在Coq中重写一个匹配项

在Coq中,假设我有一个f在(g x)上匹配定义的fixpoint函数,我想g x = ...在证明中使用form()中的假设.以下是一个最小的工作示例(实际上f,g会更复杂):

Definition g (x:nat) := x.

Fixpoint f (x:nat) := 
  match g x with
    | O => O
    | S y => match x with 
      | O => S O
      | S z => f z
      end 
  end.

Lemma test : forall (x : nat), g x = O -> f x = O.
Proof.
  intros.
  unfold f.
  rewrite H. (*fails*)
Run Code Online (Sandbox Code Playgroud)

该消息显示Coq被卡住的地方:

(fix f (x0 : …
Run Code Online (Sandbox Code Playgroud)

coq

7
推荐指数
1
解决办法
1017
查看次数

如何组成返回Maybe(Haskell)的镜头

假设我的镜头at _需要一些Maybe a:

import Data.Map as M
m = M.fromList [(1,(2,3))]
--set 2nd element
m ^. at 1 .~ Just (4,5) 
--gives fromList [(1,(4,5))]
m ^. at 1 .~ Nothing
--gives fromList ()
Run Code Online (Sandbox Code Playgroud)

现在假设我想用另一个镜头来构图.这个镜头返回的事实Maybe a阻止我直接这样做.

m ^. at 1 . _2 .~ Just 4
--error
-- I want to get M.fromList [(1,(2,4))]
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

haskell lenses haskell-lens

6
推荐指数
1
解决办法
961
查看次数

函数中的Haskell类型注释

Haskell似乎没有识别我的类型注释.为什么是这样?

这里Runner是一个函数的包装器,具有c的默认起始值​​("连续").在rmap中,我希望c有一个默认的"起始"值(例如,如果c是[a],我会让该值为[]).这里当然不方便(也许这是不好的做法,随意提出更好的方法)是需要类型注释,因为rmap的域不涉及类型c.但是,为什么我不能通过类型注释来解决这个问题呢?

data ExitCode = Fail | OK | Success deriving (Eq, Show)

data Runner a b c = Runner {cont ::c
              , fun :: (a, c , ExitCode) ->(b,  c, ExitCode)}

class Pointed a where
  point :: a

rmap:: (Pointed c) => (a->b) -> Runner a b c
rmap f = Runner (point::c) (\(x,y,z) -> (f x,y,z))
Run Code Online (Sandbox Code Playgroud)

错误如下.(似乎将c解释为c1.)

Could not deduce (Pointed c1) arising from a use of `point'
from the context (Pointed c)
  bound by the type signature …
Run Code Online (Sandbox Code Playgroud)

haskell

5
推荐指数
1
解决办法
1130
查看次数

切换Haskell中实例声明的参数顺序

我想创建一个实例声明,但free类型变量不是最后一个变量.例如,我有一个类声明

class Poppable m where
  tryPop :: m a -> Maybe (a, m a)
Run Code Online (Sandbox Code Playgroud)

现在我想让Q.PSQ(优先级队列)成为Poppable的一个实例.具体来说,我想要这样的东西:

instance (Ord p) => Poppable (\a -> Q.PSQ a p) where
  tryPop = fmap (first Q.key) . Q.minView
Run Code Online (Sandbox Code Playgroud)

但是,这不是合法的Haskell代码.如果切换到PSQ的参数顺序,那么我就没有问题了:

instance (Ord p) => Poppable (Q.PSQ p) where
  tryPop = fmap (first Q.key) . Q.minView
Run Code Online (Sandbox Code Playgroud)

如何切换实例声明的参数顺序?

现在我可以使用newtype包装PSQ:

newtype PSQ'' a b = PSQ'' (Q.PSQ b a)
Run Code Online (Sandbox Code Playgroud)

然而这对我来说似乎很笨重,因为我必须不断地包装/打开它.有没有更简单的方法?

*

我尝试使用数据/类型系列,但都给出了错误.

(1)使用数据族声明:

data family PSQ' a b
data instance PSQ' a b = PSQ b a
instance (Ord …
Run Code Online (Sandbox Code Playgroud)

haskell

4
推荐指数
1
解决办法
102
查看次数

折叠中的懒惰(>> =)

考虑Haskell中的以下两个表达式:

foldl' (>>=) Nothing (repeat (\y -> Just (y+1)))
foldM (\x y -> if x==0 then Nothing else Just (x+y)) (-10) (repeat 1)
Run Code Online (Sandbox Code Playgroud)

第一个需要永远,因为它试图评估无限表达

...(((Nothing >>= f) >>= f) >>=f)...
Run Code Online (Sandbox Code Playgroud)

而Haskell只会尝试从内到外进行评估.

然而,第二个表达式立即给出了Nothing.我一直认为foldM只是使用(>> =)进行折叠,但是它会遇到同样的问题.所以它在这里做了一些更聪明的事情 - 一旦它命中了它就知道停止了.foldM实际上如何工作?

haskell fold

3
推荐指数
1
解决办法
97
查看次数

如何在Haskell中覆盖Eq,Show in records in Show

我希望能够覆盖Haskell中记录的Eq和Show的默认定义.例如,假设我想在第一个条目相等的情况下将有序对定义为相等.但是当我写这个:

data Two = Two {a::Int, b::Int}

instance Eq Two where
x == y = ((a x) == (a y))
Run Code Online (Sandbox Code Playgroud)

哈斯克尔抱怨道

Ambiguous occurrence `=='
It could refer to either `TestOverride.==',
                         defined at TestOverride.hs:15:3
                      or `Prelude.==',
                         imported from `Prelude' at TestOverride.hs:7:8-19
                         (and originally defined in `GHC.Classes')
Run Code Online (Sandbox Code Playgroud)

有什么问题?

haskell

1
推荐指数
1
解决办法
412
查看次数

标签 统计

haskell ×5

coq ×1

fold ×1

haskell-lens ×1

lenses ×1

python ×1

tensorflow ×1