谈职业写手和业余写手

因为我的工作性质的关系,我每天都要和各种各样的作者打交道。以前我很依赖职业写手,因为他们召之即来甚至不请自来,而且来之能战,可以在比较短的时间内拿出你要的东西。尽管这样的东西质量平平,很少有特别出色的作品, 但对于讲究时效性的周报来说,不拖稿、少错字、质量稳定才是衡量一个好写手的标准。

前阵子我结束了专题制作的生涯,转向互动娱乐版和网络版,我需要一些充满生活气息、轻松有趣又实用的小品,这是职业写手无法提供的。于是我求助于博客搜索引擎,设置特定的关键字,搜索我需要的日志。找到合适的就给博客主人留言,进行进一步联系,采用了作品就支付稿费。情况还不错,我发现乐于在自己的博客里描述自己的消费经历和产品问题的人非常多,而且他们对于自己的作品能登上报纸感到很兴奋,这与职业写手只关心稿费什么时候到帐,是走邮局还是走银行卡的情况形成了鲜明对比。

今天早上我忽然想起了上个星期和我联系过的一个博客作者,我点开了他的博客,看他会不会因为这次约稿而写了新的东西,结果我看到了下面这篇:

快乐就要和大家一起分享    发表者: oscarww  

《消费电子世界》2006年7月24日 第28期 总第112期 第B39版《摄像头风波》作者 oscarww ,也就是我啦!

终于等到出版了,当然买了一份自己珍藏。拿到家里激动的翻着每一页,不知道会在什么位置,不知道会占多大的版面,紧张!也许是在某个角落,某个夹缝。整本报纸都快翻完了,还没发现,心里毛毛的。不会被骗吧?或者不是发表在这一期?不会!通过那几封email就能确认。就在快要绝望的时候,眼前一亮,那么大的字,整篇文章占了半个版面,在最后一页终于出现了。想想1200字也挺多的,字体再小,角落或夹缝也不一定能容得下,刚才的担心显得有些愚蠢了。

接下来当然要仔细地阅读一下,一是欣赏一下自己发表的第一篇文章,二是看看那个编辑做了哪些删改。读完后,感觉确实比我的原文要好得多,精悍了,流畅了。

心里的愉悦之火仍烧得正旺,现在找不到电子版的,就拿来相机,拍下了数张照片,主要是文章所在的那一块,所在的整个版面,以及这一期的封面,总之记录下了能证明此篇文章发表的所有证据。挑了几张效果最佳的,用photoshop进行了简单的修改和剪裁。这回完美了。传到了自己的网盘里作为永久的保存。也传到了自己所有的同学录中。

快乐就要和大家一起分享!
 

这就是职业写手和业余作者的区别,业余作者在乎的是成就感,职业写手把每一次写作都当做了工作来完成。可是一个人的经历是有限的,等亲身感受写完了,剩下的就是把别人的经历改编成自己的,或者揣想一些根本没经历过的心情。这种现象在游戏行业可能还不太突出,毕竟要玩一款游戏并不是很困难的事情,可在IT行业,又有几个人会天天试用新产品,或者天天去卖场找卖家扯皮呢?

我觉得,博客也许要继BBS以后,变成挖掘作者的又一个来源。而编辑未必一定要埋头写一个完整的策划以后再找职业写手约稿,他完全可以确定一些主题,然后去搜索相关博客,从中找出一些自己没有想到过的点,逐步完善自己的策划,并且通过与博客作者联系的方式,深挖自己需要了解的细节。

当然这里面也有栏目定位的问题,专业知识的部分暂时还离不开职业写手的支持,但专业人士未必都是职业写手,尽量减少职业写手的使用,对于报纸的创新来说,还是有好处的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你回答这个问题。首先,手写数字识别的卷积神经网络(CNN)通常由卷积层和池化层组成。以下是用C++实现卷积层和池化层的基本步骤: 卷积层: 1. 定义卷积核的大小和数量 2. 定义输入和输出张量的大小 3. 对于每个卷积核,遍历输入张量,按照卷积核大小计算每个位置的输出 4. 将输出张量传递给下一层网络 池化层: 1. 定义池化的类型(最大池化或平均池化)和池化核大小 2. 定义输入和输出张量的大小 3. 对于每个池化核,遍历输入张量,按照池化核大小计算每个位置的输出 4. 将输出张量传递给下一层网络 下面是一个卷积层和一个最大池化层的C++代码实现示例: ```c++ //卷积层实现 void conv_layer(float* input, float* output, float* weight, float* bias, int in_h, int in_w, int in_c, int out_h, int out_w, int out_c, int ksize, int stride, int padding) { int in_size = in_h * in_w * in_c; int out_size = out_h * out_w * out_c; int kernel_size = ksize * ksize; //遍历每个输出通道 for (int oc = 0; oc < out_c; oc++) { int out_idx = oc * out_h * out_w; for (int oh = 0; oh < out_h; oh++) { for (int ow = 0; ow < out_w; ow++) { int in_idx = 0; //遍历每个输入通道 for (int ic = 0; ic < in_c; ic++) { int kernel_idx = oc * in_c * kernel_size + ic * kernel_size; //遍历卷积核大小 for (int kh = 0; kh < ksize; kh++) { for (int kw = 0; kw < ksize; kw++) { int ih = oh * stride + kh - padding; int iw = ow * stride + kw - padding; if (ih >= 0 && ih < in_h && iw >= 0 && iw < in_w) { int in_pix_idx = ic * in_h * in_w + ih * in_w + iw; int kernel_pix_idx = kh * ksize + kw; in_idx += input[in_pix_idx] * weight[kernel_idx + kernel_pix_idx]; } } } } //加上偏置项 output[out_idx++] = in_idx + bias[oc]; } } } } //最大池化层实现 void maxpool_layer(float* input, float* output, int in_h, int in_w, int in_c, int out_h, int out_w, int ksize, int stride) { int in_size = in_h * in_w * in_c; int out_size = out_h * out_w * in_c; //遍历每个输入通道 for (int ic = 0; ic < in_c; ic++) { int out_idx = ic * out_h * out_w; for (int oh = 0; oh < out_h; oh++) { for (int ow = 0; ow < out_w; ow++) { int in_idx = ic * in_h * in_w + oh * stride * in_w + ow * stride; float max_val = input[in_idx]; //遍历池化核大小 for (int kh = 0; kh < ksize; kh++) { for (int kw = 0; kw < ksize; kw++) { int cur_idx = in_idx + kh * in_w + kw; if (cur_idx < in_size && input[cur_idx] > max_val) { max_val = input[cur_idx]; } } } output[out_idx++] = max_val; } } } } ``` 希望这个示例可以帮助你理解如何用C++实现卷积层和池化层。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值