【发布时间】:2020-03-16 18:52:51
【问题描述】:
在学习CNN的时候,我发现博客很受打击
- http://blog.csdn.net/tostq/article/details/51786265
- https://github.com/tostq/DeepLearningC/tree/master/CNN
他用C语言做cnn,那是参考Matlab DeepLearnToolbox cnn。 像吹的代码
//---forward Propagation,InputData is image data
void cnnff(CNN* cnn,float** inputData)
{
int outSizeW=cnn->S2->inputWidth;
int outSizeH=cnn->S2->inputHeight;
int i,j,r,c;
//---the first,convolution C1
nSize mapSize={cnn->C1->mapSize,cnn->C1->mapSize};
nSize inSize={cnn->C1->inputWidth,cnn->C1->inputHeight};
nSize outSize={cnn->S2->inputWidth,cnn->S2->inputHeight};
for(i=0;i<(cnn->C1->outChannels);i++){
for(j=0;j<(cnn->C1->inChannels);j++){
float** mapout=cov(cnn->C1->mapData[j][i],mapSize,inputData,inSize,valid);
addmat(cnn->C1->v[i],cnn->C1->v[i],outSize,mapout,outSize);
for(r=0;r<outSize.r;r++)
free(mapout[r]);
free(mapout);
}
for(r=0;r<outSize.r;r++)
for(c=0;c<outSize.c;c++)
cnn->C1->y[i][r][c]=activation_Sigma(cnn->C1->v[i][r][c],cnn->C1->basicData[i]);
}
//the second,pooling S2
outSize.c=cnn->C3->inputWidth;
outSize.r=cnn->C3->inputHeight;
inSize.c=cnn->S2->inputWidth;
inSize.r=cnn->S2->inputHeight;
for(i=0;i<(cnn->S2->outChannels);i++){
if(cnn->S2->poolType==AvePool)
avgPooling(cnn->S2->y[i],outSize,cnn->C1->y[i],inSize,cnn->S2->mapSize);
}
}
这段代码我可以看到输入图像卷积和池化后的值如何变化以及有多少特征图。 那么,我可以在 Tensorflow 上看到这样的内容吗?
我在 tensorflow\python\client\session.py 跟踪 Tensorflow 的代码,代码类似于 blow
def _run_fn(session, feed_dict, fetch_list, target_list, options,
run_metadata):
# Ensure any changes to the graph are reflected in the runtime.
self._extend_graph()
with errors.raise_exception_on_not_ok_status() as status:
if self._created_with_new_api:
return tf_session.TF_SessionRun_wrapper(
session, options, feed_dict, fetch_list, target_list,
run_metadata, status)
else:
return tf_session.TF_Run(session, options,
feed_dict, fetch_list, target_list,
status, run_metadata)
函数“tf_session.TF_Run”时,只返回(loss,Accuracy ),但看不到值如何改变。
然后我在 C:\Users\xxx\AppData\Local\Continuum\Anaconda3\envs\tensorflow1\Lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py 跟踪 Tensorflow 代码,代码就像吹
def TF_Run(session, run_options, feed_dict, output_names, target_nodes, out_status, run_outputs):
return _pywrap_tensorflow_internal.TF_Run(session, run_options, feed_dict, output_names, target_nodes, out_status, run_outputs)
TF_Run = _pywrap_tensorflow_internal.TF_Run
pywrap_tensorflow_internal.py 使用了 _pywrap_tensorflow_internal.pyd,我认为如何更改的值在这个 .pyd 上。那么,这个 .pyd 源代码在哪里?因为这个 .pyd 只能通过“pip install tensorflow”下载。
【问题讨论】:
标签: python tensorflow deep-learning