考虑代码:
Dim fn As String = PediatricGrowthChartsImageHandler.GetPGCImagePath(CurrentPatient.EntityID, m_iChartTypeId)
If Not IsNothing(customDrowingChart) Then
Dim chartImage As Drawing.Image = customDrowingChart.GetChart()
hdnImgChartH.Value = chartImage.Height.ToString 'test
hdnImgChartW.Value = chartImage.Width.ToString 'test
chartImage.Save(fn, System.Drawing.Imaging.ImageFormat.Png)
chartImage.Dispose()
imgChart.ImageUrl = String.Format("PediatricGrowthChartsImageHandler.axd?PatientID={0}&PGCTypeID={1}&rnd={2}", CurrentPatient.EntityID, m_iChartTypeId, New Random().NextDouble().ToString())
Else
Chart1.SaveImage(fn, ChartImageFormat.Png)
End If
End If
If Not IsNothing(DataToBeFilled) Then DataToBeFilled.dispose()
End Sub
整个网络的输入尺寸应为1x20x20x1000,并且 返回大小为1x20x20x200的输出,其中200个输出logits中的每一个 通过大小为N_intermediate的自己的单层传递。
问题是图形的构建相当慢,并且 则需要太多内存,从而导致内存错误。 为了比较,下面的代码
from tensorflow.contrib import layers
#input_features is given, and is 1x20x20x1000 for instance.
N_outputs = 200
N_intermediate = 50
out_lst = []
for i in xrange(N_outputs):
net = layers.conv2d(
input_features,
N_intermediate, [1, 1]
)
out = layers.conv2d(
net,
1, [1, 1],
activation_fn=None,
normalizer_fn=None
)
out_lst.append(out)
logits = tf.concat(out_lst,axis = 3)
尽管创建了更多的变量,但创建了图形并且训练运行良好。 第一个版本与第二个版本等效,在最后一层中许多权重设置为0(并且它们的确必须为零)。
创建与第一个版本等效的网络的最佳方法是什么?