我这样做是为了在我所有的神经元之间共享 learning_rate
:
class neural_network {
public:
neural_network(float learning_rate = 0.005f)
: learning_rate(new float(learning_rate)){};
shared_ptr<float> learning_rate;
private:
vector<neuron> neurons;
};
class neuron {
public:
neuron(const float learning_rate) {
this->learningRate = make_shared<float>(learningRate);
};
private:
const shared_ptr<const float> learning_rate;
};
如果我的所有神经元都具有相同的 learning_rate
,这是一个很好的解决方案吗?
最佳答案
shared_ptr
相当昂贵,我认为这里没有必要,只有网络需要“拥有”学习率。不要害怕在适当的地方使用原始指针,只要避免 new
和 delete
即可:
class neuron {
public:
neuron(const float& learning_rate)
: learning_rate(&learning_rate){};
private:
const float* learning_rate;
};
class neural_network {
public:
neural_network(float learning_rate = 0.005f)
: learning_rate(learning_rate){};
float learning_rate;
void make_neuron()
{
neurons.push_back(neuron(learning_rate));
}
private:
vector<neuron> neurons;
};
关于c++ - 使用 shared_ptr 在类及其成员对象之间共享变量是一个好的解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59139769/