假设我们有一个列表,在每次迭代中附加一个15,32之间的整数(让我们调用整数rand).我想设计一种算法,为每个人分配1(1.25到0.75)之间的奖励rand.分配奖励的规则是这样的.
首先我们计算列表的平均值.然后,如果rand超过平均值,我们预计奖励小于1,如果rand低于平均值,则奖励高于1.平均值之间的距离rand越大,奖励增加/减少的越多.例如:
rand = 15, avg = 23 then reward = 1.25
rand = 32, avg = 23 then reward = 0.75
rand = 23, avg = 23 then reward = 1
等等.
我为此算法开发了以下代码:
import numpy as np
rollouts = np.array([])
i = 0
def modify_reward(lst, rand):
reward = 1
constant1 = 0.25
constant2 = 1
std = np.std(lst)
global avg
avg = np.mean(lst)
sub = np.subtract(avg, rand)
landa = …Run Code Online (Sandbox Code Playgroud) 我是张量流和神经网络的新手.我开始了一个关于检测波斯文本错误的项目.我使用了这个地址中的代码并在这里开发了代码.请检查代码,因为我无法在此处输入所有代码.
我想要做的是给模型提供几个波斯句子进行训练,然后看模型是否可以检测到错误的句子.该模型适用于英语数据,但当我将其用于波斯数据时,我遇到了这个问题.
代码太长了,无法写在这里,所以我试着指出我认为可能导致问题的部分.我使用这些行train.py很好地工作并存储词汇表:
x_text, y = data_helpers.load_data_labels(datasets)
# Build vocabulary
max_document_length = max([len(x.split(" ")) for x in x_text])
vocab_processor = learn.preprocessing.VocabularyProcessor(max_document_length)
x = np.array(list(vocab_processor.fit_transform(x_text)))
Run Code Online (Sandbox Code Playgroud)
但是在训练之后我尝试使用以下代码eval.py:
vocab_path = os.path.join(FLAGS.checkpoint_dir, "..", "vocab")
vocab_processor = learn.preprocessing.VocabularyProcessor.restore(vocab_path)
x_test = np.array(list(vocab_processor.transform(x_raw)))
Run Code Online (Sandbox Code Playgroud)
发生此错误:
vocab_processor = learn.preprocessing.VocabularyProcessor.restore(vocab_path)
File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\tensorflow\contrib\learn\python\learn\preprocessing\text.py", line 226, in restore
return pickle.loads(f.read())
File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\tensorflow\python\lib\io\file_io.py", line 118, in read
self._preread_check()
File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\site-packages\tensorflow\python\lib\io\file_io.py", line 78, in _preread_check
compat.as_bytes(self.__name), 1024 * 512, status)
File "C:\WinPython-64bit-3.5.2.3Qt5\python-3.5.2.amd64\lib\contextlib.py", line 66, in __exit__ …Run Code Online (Sandbox Code Playgroud) 我想通过使用内存视图来加速我的代码。这是我使用的两个类:
cdef class child:
cdef public int[:] move
def __init__(self, move):
self.move = move
cdef class parent:
cdef public:
list children
int[:, :] moves
def __init__(self):
self.children = []
def add_children(self, moves):
cdef int i = 0
cdef int N = len(moves)
for i in range(N):
self.children.append(child(moves[i]))
Run Code Online (Sandbox Code Playgroud)
这是我想检查类是否有效的代码:
temp = []
for i in range(100):
temp.append([i, i+1])
cdef int[:, :] moves = np.asarray(temp, dtype=np.int32)
a = parent()
a.add_children(moves)
for move in moves:
for ch in a.children:
if move == ch.move: …Run Code Online (Sandbox Code Playgroud) 我有这个代码属于这里feature_extractor.py文件夹的一部分:
import torch
import torchvision.transforms as transforms
import numpy as np
import cv2
from .model import Net
class Extractor(object):
def __init__(self, model_path, use_cuda=True):
self.net = Net(reid=True)
self.device = "cuda" if torch.cuda.is_available() and use_cuda else "cpu"
state_dict = torch.load(model_path, map_location=lambda storage, loc: storage)['net_dict']
self.net.load_state_dict(state_dict)
print("Loading weights from {}... Done!".format(model_path))
self.net.to(self.device)
self.size = (64, 128)
self.norm = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
])
def _preprocess(self, im_crops):
def _resize(im, size):
return cv2.resize(im.astype(np.float32) / 255., size)
im_batch = …Run Code Online (Sandbox Code Playgroud) 我编写了一些程序,该程序会numpy在每次迭代中更新列表并对其进行一些操作。迭代次数取决于时间。例如1秒内,可能会有1000到2500次迭代。这意味着numpy列表中的项目在运行1秒钟时不会超过2500。
我已经实现了一种基本算法,但我不确定这是否是最快的计算方法bonus:
import numpy as np
cdef int[:, :] pl_list
cdef list pl_length
cdef list bonus
pl_list = np.array([[8, 7]], dtype=np.int32)
def modify(pl_list, pl_length):
cdef int k_const = 10
mean = np.mean(pl_list, axis=0)
mean = np.subtract(mean, pl_length)
dev = np.std(pl_list, axis=0)
mean[0] / dev[0] if dev[0] != 0 else 0
mean[1] / dev[1] if dev[1] != 0 else 0
bonus = -1 + (2 / (1 + np.exp(-k_const * mean)))
return list(bonus)
for i in range(2499): …Run Code Online (Sandbox Code Playgroud) python ×5
cython ×2
numpy ×2
python-3.x ×2
algorithm ×1
caching ×1
loops ×1
matplotlib ×1
memoryview ×1
performance ×1
pytorch ×1
redis ×1
tensorflow ×1