python数据输入caffe实现回归

本文通过使用Caffe框架实现了一个简单的线性回归模型。该模型基于随机生成的数据进行训练,并利用部署文件(deploy.prototxt)进行预测。文章展示了如何设置Caffe的SGD求解器参数、构建网络结构以及可视化最终训练结果。
摘要由CSDN通过智能技术生成
from numpy import *
import caffe

x = random.random((100, 1)).astype(dtype=float32)
y = 2.0 * x + 0.5

caffe.set_mode_cpu()
solver = caffe.SGDSolver('solver.prototxt')
solver.net.blobs['data'].data[...] = x
solver.net.blobs['label'].data[...] = y
solver.solve()

from matplotlib import pyplot as plt
net = caffe.Net('deploy.prototxt','test_iter_300.caffemodel', caffe.TEST)
tx = random.random((100, 1)).astype(dtype=float32)

net.blobs['data'].data[...] = tx

out = net.forward()
ty = out['out']

print('w = %f, b = %f' % (net.params['ip1'][0].data, net.params['ip1'][1].data))
plt.figure()
plt.plot(tx, ty)
plt.show()


solver.prototxt

train_net: "train.prototxt"
base_lr: 0.1
display: 10
max_iter: 300
lr_policy: "step"
gamma: 0.1
momentum: 0.9
weight_decay: 0.0005
stepsize: 200
snapshot: 300
snapshot_prefix: "test"
solver_mode: CPU
device_id: 0

train.prototxt

layer {
  name: "data"
  type: "Input"
  top: "data"
  top: "label"
  input_param {
    shape{
      dim:100
      dim:1
    }
    shape{
      dim:100
      dim:1
    }
  }
}
layer {
  name: "ip1"
  type: "InnerProduct"
  bottom: "data"
  top: "ip1"
  inner_product_param {
    num_output: 1
    weight_filler {
      type: "xavier"
    }
  }
}
layer {
  name: "loss"
  type: "EuclideanLoss"
  bottom: "ip1"
  bottom: "label"
  top: "loss"
}


deploy.prototxt

layer {
  name: "data"
  type: "Input"
  top: "data"
  input_param {
    shape{
      dim:100
      dim:1
    }
  }

}

layer {
  name: "ip1"
  type: "InnerProduct"
  bottom: "data"
  top: "out"
  inner_product_param {
    num_output: 1
    weight_filler {
      type: "xavier"
    }
  }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值