- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
<分区>
在keras中,每次运行都具有高方差和不稳定的性能。根据 https://keras.io/getting-started/faq/#how-can-i-obtain-reproducible-results-using-keras-during-development 解决这个问题.我如图所示设置种子。
不幸的是,这没有帮助,我继续得到混合的结果。任何指导都会有所帮助。
# Seed value (can actually be different for each attribution step)
seed_value= 0
# 1. Set `PYTHONHASHSEED` environment variable at a fixed value
import os
os.environ['PYTHONHASHSEED']=str(seed_value)
# 2. Set `python` built-in pseudo-random generator at a fixed value
import random
random.seed(seed_value)
# 3. Set `numpy` pseudo-random generator at a fixed value
import numpy as np
np.random.seed(seed_value)
# 4. Set `tensorflow` pseudo-random generator at a fixed value
import tensorflow as tf
tf.set_random_seed(seed_value)
# 5. Configure a new global `tensorflow` session
from keras import backend as K
session_conf = tf.ConfigProto(intra_op_parallelism_threads=1, inter_op_parallelism_threads=1)
sess = tf.Session(graph=tf.get_default_graph(), config=session_conf)
K.set_session(sess)
from itertools import permutations
import keras
from keras import optimizers
from keras.callbacks import Callback
from keras.initializers import glorot_uniform
from keras.layers import Input, LSTM, Dense, concatenate, Lambda, Multiply, Add, Dropout, multiply, TimeDistributed, Conv1D, GlobalMaxPooling1D, LeakyReLU
from keras.activations import softmax, sigmoid
from keras.models import Model
from keras_sequential_ascii import keras2ascii
from keras import backend as K
从 keras.callbacks 导入 ModelCheckpoint,EarlyStopping
# Custom loss to take full batch (of size beam) and apply a mask to calculate the true loss within the beam
beam_size = 10
K.clear_session()
def create_mask(y, yhat):
idxs = list(permutations(range(beam_size), r=2))
perms_y = tf.gather(y, idxs)
perms_yhat = tf.gather(yhat, idxs)
mask = tf.where(tf.not_equal(perms_y[:,0], perms_y[:,1]))
mask = tf.reduce_sum(mask, 1)
uneq = tf.squeeze(tf.gather(perms_y, mask))
yhat_uneq = tf.squeeze(tf.gather(perms_yhat, mask))
return uneq, yhat_uneq
def mask_acc(y, yhat):
uneq, yhat_uneq = create_mask(y, yhat)
uneq = tf.argmax(uneq,1)
yhat_uneq = tf.argmax(yhat_uneq, 1)
#uneq = tf.Print(uneq, [uneq], summarize=-1)
#yhat_uneq = tf.Print(yhat_uneq, [yhat_uneq], 'pred', summarize=-1)
# argmax and compare
#a = tf.Print(tf.reduce_mean(tf.cast(tf.equal(uneq, yhat_uneq), tf.float32)), [tf.reduce_mean(tf.cast(tf.equal(uneq, yhat_uneq), tf.float32))])
return tf.reduce_mean(tf.cast(tf.equal(uneq, yhat_uneq), tf.float32))#tf.cond(tf.greater(tf.size(yhat_uneq), 1), lambda: tf.reduce_sum(tf.cast(tf.equal(uneq, yhat_uneq), tf.float32)), lambda: 100.)
def beam_acc(y, yhat):
#a = tf.Print(yhat, [yhat], 'pred', summarize=-1)
#yhat = tf.Print(yhat, [yhat],'\nSTART', summarize=-1)
yhat_uneq = tf.argmax(yhat, 0)
# argmax and compare
# do possible indexes and predicted index
y = tf.reshape(y, [-1])
#y = tf.Print(y, [y], summarize=-1)
possible = tf.where(tf.equal(y, tf.constant(1.0,dtype=tf.float32)))
yhat_uneq = tf.Print(yhat_uneq, [yhat_uneq], 'prediction')
possible = tf.reshape(possible, [-1])
#possible = tf.Print(possible, [possible], 'actual')
mean = tf.reduce_mean(tf.cast(tf.reduce_any(tf.equal(possible, yhat_uneq)), tf.float32))
#mean = tf.Print(mean, [mean], 'mean\n')
return mean#tf.reduce_mean(tf.cast(tf.reduce_any(tf.equal(possible, yhat_uneq)), tf.float32))#tf.cond(tf.equal(tf.reduce_sum(y), tf.constant(0.0)), true_fn=lambda: 0., false_fn=lambda: tf.reduce_mean(tf.cast(tf.equal(yhat_uneq, possible), tf.float32)))
def mask_loss(y, yhat):
# Cosider weighted loss
uneq, yhat_uneq = create_mask(y, yhat)
#yhat_uneq = tf.Print(yhat_uneq, [yhat_uneq], summarize=-1)
#create all permutations and zero out matches with mask
total_loss = tf.reduce_mean(tf.losses.softmax_cross_entropy(onehot_labels=tf.cast(uneq, tf.int32), logits=yhat_uneq))
#d = tf.Print(yhat_uneq, [yhat_uneq], summarize=-1)
#total_loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels=uneq, logits=yhat_uneq))
#total_loss = tf.Print(total_loss, [total_loss])
return total_loss
x = Input((19,78))
lstm1 = LSTM(64, batch_input_shape=(10, 19, 78),return_sequences=True, unroll=True, activation='relu')(x)
#mult = multiply([encoded, ff])
#cat = concatenate([encoded, squeezed])
#dense2 = Dense(10)(encoded)
dense = Dense(1)(lstm1)
#mult = multiply([dense, prob])
#dense2 = Dense(1)(mult)
#print(dense2.shape)
output = Lambda(lambda x: K.sum(x, axis=1))(dense)
#output = Lambda(lambda x: K.squeeze(x, -1))(added)
#lam2 = Lambda(lambda x: K.sum(x, axis=1))(lam)
#probs_aug = Lambda(lambda x: x * .01)(probs)
#output = Add()([lam, probs])
sgd = optimizers.SGD(lr=0.01, nesterov=True, momentum=.9, decay=1e-5)
adam = optimizers.Adam(lr=0.001,decay=1e-5)#, nesterov=True, momentum=.9, decay=1e-5)
lstm_model = Model(inputs=[x], outputs=output)
lstm_model.compile(sgd, loss=mask_loss, metrics=[mask_acc, beam_acc])
filepath="weights.best.hdf5"
checkpoint = ModelCheckpoint(filepath, monitor='val_beam_acc', verbose=1, save_best_only=True, mode='max')
stop = EarlyStopping(monitor='val_beam_acc', patience=3)
#lstm_model.fit([X_train], y_train, batch_size=10,epochs=10, verbose=1, shuffle=False,validation_data=([X_dev], y_dev))#, callbacks=[checkpoint, ])
#, callbacks=[PlotLossesCallback()])
lstm_model.fit(X_train, y_train, batch_size=10,
epochs=10, verbose=1, shuffle=False,validation_data=(X_dev, y_dev), callbacks=[checkpoint, stop])
#, callbacks=[PlotLossesCallback()])
2017 年 7 月 19 日更新 在这里找到解决方案:https://stackoverflow.com/a/10021912/5729266 如果您不想读到最后,请快速得出结论。 我之前的代码中随
golang 文档说 Seed, unlike the Rand.Seed method, is safe for concurrent use. rand.Seed 实际上是来自math/rand
我正在尝试重现我之前运行的模拟,以便在文本文件中记录当前日期时间的种子,然后使用记录的日期时间种子来获取与之前获得的相同的值 但是,我不确定为什么得出的值与我在之前的模拟中运行的值不相似。 这是我尝试
rake db:seed 每当您修改种子数据时,重新运行种子数据是否会删除现有种子数据并重新创建或仅添加新记录? 最佳答案 当您运行时 rake db:seed , db/seeds.rb 仅包含在
是否可以在 Laravel 5 中使用以下内容为相关表做种? php artisan db:seed 我有两张 table users id first name projects
我正在尝试为一组足球队和足球位置播种,奇怪的是,rails 根本没有这样做。 rake db:seed --trace ** Invoke db:seed (first_time) ** Execut
我正在寻找网络。我发现这个话题https://iamtrask.github.io/2015/07/12/basic-python-network/ 一切顺利,但我无法理解那部分: # seed ra
在Python的numpy库中,np.random.seed方法可以接受两种不同类型的参数:int和array_like[int] . 它们有什么区别?如:np.random.seed(2) 和np.
我正在使用 scikit-learn 和 numpy,我想设置全局种子,以便我的工作可重现。 我应该使用 numpy.random.seed 还是 random.seed? 从评论中的链接,我了解到它
出于某种原因,当我尝试通过 heroku 执行此操作时,我的 db:seed 无法正常工作。当我在本地执行时,它工作正常。 paul@paul-laptop:~/rails_projects/fogl
我正在尝试同步转换我的图像和 mask 标签,但随机增强以不同方式应用于两个生成器(当我将两个图像保存到一个目录时证明)。 我试过了 在我的库堆栈中播种所有生成器 禁用随机播放和多处理 确保图像和蒙版
我想在特定行之后结束set.seed()的范围,以便对其余代码进行真正的随机化处理。这是一个我想让set.seed()用于“ rnorm”(第4行)而不是“ nrow”(第9行)的示例 set.see
想知道你是否可以帮助我: 我有一个名为initializeAll的方法: public final void initializeAll() { //other stuff........ rand
我有一行代码使用高精度时钟的纳秒抓取来为 mersenne twister 伪随机数生成器播种。类似这样的事情: rng.seed(duration_cast(high_resolution_cloc
我正在浏览一些关于 ASP.NET MVC 的教程(here 和 here),并决定自己尝试一些东西。现在,我有三个表,Resume、Descriptions、SubDescriptions。这是三者
我正在使用 random.seed() 来尝试保持 random.sample() 与我从列表中采样更多值相同,并且在某些时候数字会发生变化......我认为那个seed() 函数的目的是保持数字相同
我正在研究中等规模的数据集,比如从具有 100,000 个观察值的大型数据集中采样的 9000 个观察值。 我可以使用以下 set.seed() 函数来保证每次都获得完全相同的子集吗? set.see
我在 Laravel 中有一个 Seeder public function run() { $user = App\Admin::create([ '
在确信学习和使用 Angular.js 后,我打算启动一个具体的 Web UI 应用程序,以便启动经验学习轮。 (该应用程序将是某种个人计划、待办事项列表、提醒、番茄工作法导向等等......) On
在启动程序之前,我多次看到 R 中的 set.seed 函数。我知道它基本上用于随机数生成。有什么具体需要设置吗? 最佳答案 需求是对可重现结果的可能渴望,例如,这可能来自尝试调试程序,或者当然来自尝
我是一名优秀的程序员,十分优秀!