I am trying to implement facenet in Keras with Thensorflow backend and I have some problem with the triplet loss.
I call the fit function with 3*n number of images and then I define my custom loss function as follows:
def triplet_loss(self, y_true, y_pred):
embeddings = K.reshape(y_pred, (-1, 3, output_dim))
positive_distance = K.mean(K.square(embeddings[:,0] - embeddings[:,1]),axis=-1)
negative_distance = K.mean(K.square(embeddings[:,0] - embeddings[:,2]),axis=-1)
return K.mean(K.maximum(0.0, positive_distance - negative_distance + _alpha))
self._model.compile(loss=triplet_loss, optimizer="sgd")
self._model.fit(x=x,y=y,nb_epoch=1, batch_size=len(x))
Run Code Online (Sandbox Code Playgroud)
where y is just a dummy array filled with …
我正在尝试在android studio中开发一个Android应用程序,我一直在mainActivity类中编写越来越多的片段.我的问题是如何将这些文件与另一个文件分开?可能我是以错误的方式做到这一点,如果是这样,有人可以告诉我该怎么做呢?
我的代码:
public class MainActivity extends ActionBarActivity
implements NavigationDrawerFragment.NavigationDrawerCallbacks {
.
.
.
public static class PlaceholderFragment1 extends Fragment {...}
public static class PlaceholderFragment2 extends Fragment {...}
public static class PlaceholderFragment3 extends Fragment {...}
}
Run Code Online (Sandbox Code Playgroud) 我想用带有 Tensorflow 后端的 Keras 构建一个神经网络,它输出一个 L2 归一化向量。我尝试了以下操作,但由于某种原因它没有使输出正常化:
import keras.backend as K
input = Input(shape=input_shape)
...
dense7 = Dense(output_dim=3)(flatten6)
l2_norm = Lambda(lambda x: K.l2_normalize(x,axis=1))(dense7)
return Model(input=input, output=l2_norm)
Run Code Online (Sandbox Code Playgroud)
所以这里的输出是一个 3D 向量,我想确保这个向量的长度是 1。有人能帮我吗?另外你能告诉我为什么我的解决方案失败了吗?
例子:
output: [ 8.27677908e-08 2.64180613e-07 -2.81542953e-07]
required: [ 0.20961709 0.6690619 -0.71303362]
Run Code Online (Sandbox Code Playgroud)
型号概要:
____________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
====================================================================================================
input_1 (InputLayer) (None, 224, 224, 3) 0
____________________________________________________________________________________________________
convolution2d_1 (Convolution2D) (None, 112, 112, 64) 9472 input_1[0][0]
____________________________________________________________________________________________________
batchnormalization_1 (BatchNormal(None, 112, 112, 64) 128 convolution2d_1[0][0]
____________________________________________________________________________________________________
maxpooling2d_1 (MaxPooling2D) (None, …
Run Code Online (Sandbox Code Playgroud) 我正在使用带有张量流的Kears,我有一个3输出的模型,其中我只想训练2.
model = Model(input=input, output=[out1,out2,out3])
model.compile(loss=[loss1, loss2, loss3], optimizer=my_optimizer)
loss1(y_true, y_pred):
return calculate_loss1(y_true, y_pred)
loss2(y_true, y_pred):
return calculate_loss2(y_true, y_pred)
loss3(y_true, y_pred):
return 0.0*K.mean(y_pred)
Run Code Online (Sandbox Code Playgroud)
我尝试用上面的代码来做,但我不确定它做了我想做的事情.因此,我认为它会增加损失,并且会根据损失对每个输出进行训练,同时我根本不想进行训练out3
.(我需要out3
因为它用于测试).谁能告诉我如何实现这一目标或让我放心,代码实际上是我想要的?
我正在 Keras 中编写一个自定义层,我想知道是否有一种方法可以访问层内的目标值。
class Custom(Layer):
def __init__(self, **kwargs):
super(Custom, self).__init__(**kwargs)
def build(self, input_shape):
super(Custom, self).build(input_shape)
def call(self, x):
result = K.dot(x, self.kernel)
targets = ???
return result
def compute_output_shape(self, input_shape):
return (input_shape[0], self.output_dim)
Run Code Online (Sandbox Code Playgroud)
现在,我之前所做的是使用占位符在每个批次开始时存储和更新目标值。但现在我正在使用生成器,似乎在生成器内我无法调用 Keras 的 set_value 函数,因此我无法更新我的“目标占位符”
有没有什么巧妙的方法来访问自定义层中的目标值?
我正在开发一个 python 项目,但遗憾的是,一旦我尝试从 PyCharm ide 运行脚本,就会收到以下错误消息:
from .cv2 import *
ImportError: libavcodec.so.57: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
现在从终端运行相同的 python 脚本没有任何错误,所以我非常有信心每个需求都已正确安装。因此,我将注意力转向环境变量,但我不完全确定应该添加到 pycharm 环境变量列表中的变量的名称和值是什么。我运行以下命令:
whereis libavcodec.so.57
Run Code Online (Sandbox Code Playgroud)
我得到了:
libavcodec.so: /usr/lib/x86_64-linux-gnu/libavcodec.so.57 /usr/lib/x86_64-linux-gnu/libavcodec.so
Run Code Online (Sandbox Code Playgroud)
所以我想这与我应该添加到 PyCharm 的 env 变量的值有关。
有人能帮我解决这个问题吗?
我正在尝试编写一个使用 caffe 的简单 C++ 应用程序。
这是我的makefile的一部分:
FLAGS := -I/usr/local/cuda/include -I/home/guinness/GamerIA/Caffe/caffe /include/ -I/home/guinness/GamerIA/Caffe/caffe/src/ -I$(ALE)/src -I$(ALE)/src/controllers -I$(ALE)/src/os_dependent -I$(ALE)/src/environment -I$(ALE)/src/external -L$(ALE) -L../Caffe/caffe/build/lib -L/usr/local/cuda/lib64/ -L/usr/lib/x86_64-linux-gnu
CXX := g++ -std=c++11
INC:= GAImage.cpp GAScreen.cpp GABrain.cpp
FILE := main
LDFLAGS := -lale -lz -lpthread -lglog -lprotobuf -lleveldb -lsnappy -lboost_system -lhdf5_hl -lhdf5 -lopencv_core -lopencv_highgui -lopencv_imgproc -lcblas -lboost_python -lpython2.7 -lcudart -lcublas -lcurand -lcudnn -lcaffe
Run Code Online (Sandbox Code Playgroud)
程序编译成功,但是当我尝试运行结果时,出现以下错误:
error while loading shared libraries: libcaffe.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
但该文件显然位于以下位置:../Caffe/caffe/build/lib 我已包含。有人可以帮我从这里出去吗?
I am using Keras with tensorflow backend and I am curious whether it is possible to skip a layer during backpropagation but have it execute in the forward pass. So here is what I mean
Lambda (lambda x: a(x))
Run Code Online (Sandbox Code Playgroud)
I want to apply a
to x
in the forward pass but I do not want a to be included in the derivation when the backprop takes place.
我试图找到解决方案,但找不到任何东西。有人可以帮我吗?
我知道标题不是很清楚,但我不知道如何用一句话写下来.所以问题是我想要这样的东西:
void(typeof(this)::*function)(int,int);
Run Code Online (Sandbox Code Playgroud)
我知道这不会起作用但是我在徘徊是否在c ++中存在这个问题的解决方案?
更新:
class MainPage
{
public:
MainPage()
{
void (std::remove_reference<decltype(*this)>::*callback)(int, int) = &MainPage::myFunction;
((*this).*callback)(nullptr,nullptr);
}
~MainPage()
{
}
void myFunction(int a, int b)
{
}
}
Run Code Online (Sandbox Code Playgroud)
错误:
错误C2440:'newline':无法从'MainPage*'转换为'std :: remove_reference <_Ty>*'
错误C2647:'.*':无法在'MainPage'上取消引用'void(__thiscall std :: remove_reference <_Ty> ::*)(int,int)'
我想编写一个宏,将所有内容转换为void*甚至是成员函数.这是代码:
#define toVoidStar(xx,yy)\
__asm push ecx; \
__asm mov ecx, yy; \
__asm mov [xx], ecx; \
__asm pop ecx;
Run Code Online (Sandbox Code Playgroud)
当我"称之为"时,它会给出错误:错误C2017:非法逃脱
如果我在代码中使用它它只是工作正常:
void * myvoid;
__asm
{
push ecx;
mov ecx, imageMousePressed;
mov [myvoid], ecx;
pop ecx;
}
Run Code Online (Sandbox Code Playgroud)
我知道这不是一个非常好的解决方案,但无论如何有人可以帮助它的工作吗?