今天我在Tensorflow中为我的LSTM添加学习率衰减.
我改变
train_op = tf.train.RMSPropOptimizer(lr_rate).minimize(loss)
Run Code Online (Sandbox Code Playgroud)
至
lr = tf.Variable(0.0,trainable=False)
Run Code Online (Sandbox Code Playgroud)
并运行每一个火车步骤
sess.run(tf.assign(lr, lr_rate*0.9**epoch))
Run Code Online (Sandbox Code Playgroud)
但是,这种变化会将执行时间从大约7分钟增加到大约20分钟.
我的问题是:为什么这种改变会增加执行时间?
一个明显的解决方法是每1000次迭代只进行一次分配.但是,我想了解这背后的原因.
我知道heapsort的时间复杂度为O(n log n),但我真的不能想到一个具有O(n(log n)2)的算法.
我已经读过这个问题,询问json.Marshal是否可以在任何输入上失败,并根据我的情况看起来的答案,它不会失败.我的情况如下:
我有一个特定的结构(没有嵌套,没有数组,只是字符串,各种类型的整数,bools).我需要把它整理成一个json.它会失败吗?
在更具体的例子中:
type some struct {
F1 string `json:"f1"`
F2 uint32 `json:"f2"`
F3 int64 `json:"f3"`
F4 bool `json:"f4"`
}
func doSomething(s some) (string, error) {
data, err := json.Marshal(s)
if err != nil {
return "", err
}
return string(data), nil
}
Run Code Online (Sandbox Code Playgroud)
可能doSomething会失败吗?如果是,请提供意见,否则解释原因.根据我目前的知识,它不能.
我想比较BASH中的一些字符
read a
if (($a == "Y"))
then
echo "YES"
elif (($a == "y"))
then
echo "YES"
else
echo "NO"
fi
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,它没有按预期工作.它总是输出YES.看着这个超级简单的脚本,我无法理解什么是错的.
我试图解决以下问题,我将其简化为: 找到(N!)^ 2的除数
我编写了我的解决方案,我在这里作为答案包含在内(因为没有被指责不做任何工作),并且即使是大数字也能正常快速地工作,但因为它没有通过所有的测试超时,我认为我的算法效率不高.
这是我的想法的概述:
a0^b1*a1^b1*...*an^bn具有(1 + b1)*(1 + b2)*...*(1 + bn)除数M^2将有(1 + 2b1)*(1 + 2b2)*...*(1 + 2bn)除数我认为这个解决方案非常有效,但看起来有更好的方法.谁能建议我一个更好的方法?
我很好奇使用微优化是否合理
a / 2与a >> 1当a为整数a * 2 VS a << 1a % 2 VS a & 1我知道任何体面的C编译器都能很好地处理这个问题.另外请不要写关于过早优化,因为这些技术是如此明显,甚至不是优化,更像是喜欢如何编写代码.
PS我尝试做基准测试,时间上的差异没有统计学意义.我不知道如何检查go的字节码,所以谢谢你的指点.
package main
import (
"fmt"
"math"
)
func main() {
// x= +- sqrtB-4ac/2a
cal()
}
func cal() {
b := 3
a := 4
c := 2
b2 := float64(b*b)
ac := float64(4)*float64(a)*float64(c)
q := math.Sqrt(b2-ac)
fmt.Print(q)
}
Run Code Online (Sandbox Code Playgroud)
这将输出NaN,但为什么.我正在尝试制作二次计算器.我想要的就是输出数字.
go ×4
algorithm ×2
amazon-ec2 ×1
bash ×1
big-o ×1
deployment ×1
math ×1
python ×1
tensorflow ×1