commit 31248234b21b11f8e7fbccb7922a19d6b41ac512
parent fd24981e126eaa2e283437dc49ed44caa2fad22d
Author: David Freifeld <freifeld.david@gmail.com>
Date: Fri, 3 Jul 2020 18:11:26 -0700
Padding causes segfaults...
Diffstat:
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/cnn.cpp b/cnn.cpp
@@ -15,6 +15,7 @@ public:
ConvLayer(int x, int y, int stride, int kernel_size, int pad);
void convolute();
+ void set_layer(Eigen::MatrixXd* matrix);
};
ConvLayer::ConvLayer(int x, int y, int stride, int kern_size, int pad)
@@ -25,9 +26,9 @@ ConvLayer::ConvLayer(int x, int y, int stride, int kern_size, int pad)
for (int i = 0; i < kern_size*kern_size; i++) {
(*kernel)((int)i / kern_size,i%kern_size) = (double) rand() / RAND_MAX;
}
- output = new Eigen::MatrixXd (x-kern_size+1, y-kern_size+1); // We're using valid padding for now.
- for (int i = 0; i < (x-kern_size+1)*(y-kern_size+1); i++) {
- (*output)((int)i / (y-kern_size+1),i%(y-kern_size+1)) = (double) rand()/RAND_MAX;
+ output = new Eigen::MatrixXd ((x-kern_size+1+pad/stride_len), (y-kern_size+1+pad/stride_len)); // We're using valid padding for now.
+ for (int i = 0; i < (x-kern_size+1+pad/stride_len)*(y-kern_size+1+pad/stride_len); i++) {
+ (*output)((int)i / (y-kern_size+1+pad/stride_len),i%(y-kern_size+1+pad/stride_len)) = 0;
}
bias = 0;
};
@@ -42,6 +43,10 @@ void ConvLayer::convolute()
*output = (output->array() + bias).matrix();
}
+void ConvLayer::set_layer(Eigen::MatrixXd* matrix) {
+
+}
+
class PoolingLayer
{
public:
@@ -198,7 +203,7 @@ int main()
Eigen::MatrixXd* testlabel = new Eigen::MatrixXd (1,1);
*testlabel << 1;
net.labels = testlabel;
- net.add_conv_layer(8,8,1,4,0);
+ net.add_conv_layer(8,8,1,4,1);
//net.add_pool_layer(5,5,1,2,0);
net.add_layer(25, "linear");
net.add_layer(5, "relu");