R包TensorFlow在尝试训练CNN时不接受词典

2024-05-17 08:10:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我是神经网络的新手,正在尝试用tensorflow R软件包建立一个CNN。我一直在尝试使用CNN来识别kaggle上的手写数字:

https://www.kaggle.com/cd12631/using-r-and-tensorflow-to-build-cnn

在我的例子中,我正在建立一个CNN,从x射线图像中检测疾病是否存在。我拍了一小部分x光照片,来自:

https://www.kaggle.com/nih-chest-xrays/data

我把图片缩小到128x128,并使用png和pixmap库读取它们。我把它们放到一个数据框中,每一行代表一个图像。每个灰度像素有16384(128×128)列,以及疾病是否存在的标识符以及每个图像的名称

我密切关注上面的例子如何制作CNN,并使用以下步骤来创建我的神经网络: 卷积层1→ 最大池层1→ 卷积层2→ 最大池层2→ 压平层→ 完全连接的第1层→ 完全连接的第2层

在创建了所有这些层之后,我正在尝试训练数据。我从很小的地方开始,只循环了两次,以确保它正常运行。尝试运行此for循环时,出现以下错误:

代码:

sess <- tf$Session()
init <- tf$global_variables_initializer()
sess$run(init)

for (i in 1:2){
  batch_seq <- round(100) %>% sample(seq_len(1000), size = .) 
  batches_xs <- train_data_1000[batch_seq,-(1:2)]
  batches_ys <- Train_Disease_Present[c(batch_seq)]
  sess$run(train_step_by_GD, feed_dict = dict(xs = batches_xs, ys = batches_ys, keep_prob_s= 0.55))
  if(i %% 50 == 0){
    print(paste("Step =", i, "|| Training Accuracy =", compute_accuracy(output_result, train_data_1000, Train_Disease_Present), sep = " "))
    print("---")
    print(paste("Step =", i, "|| Validation Accuracy =", compute_accuracy(output_result, test_data_500, Test_Disease_Present), sep = " "))
    print("=================================================")
  }
}

错误:

Error in py_call_impl(callable, dots$args, dots$keywords) : 
  TypeError: float() argument must be a string or a number, not 'dict'

Detailed traceback: 
  File "C:\Users\rorinan\AppData\Local\CONTIN~1\ANACON~1\envs\R-TENS~1\lib\site-packages\tensorflow\python\client\session.py", line 895, in run
    run_metadata_ptr)
  File "C:\Users\rorinan\AppData\Local\CONTIN~1\ANACON~1\envs\R-TENS~1\lib\site-packages\tensorflow\python\client\session.py", line 1097, in _run
    np_val = np.asarray(subfeed_val, dtype=subfeed_dtype)
  File "C:\Users\rorinan\AppData\Local\CONTIN~1\ANACON~1\envs\R-TENS~1\lib\site-packages\numpy\core\numeric.py", line 531, in asarray
    return array(a, dtype, copy=False, order=order)

恐怕我对Python不够熟悉,无法理解错误的含义。它似乎和需要一个字符串或数字而不是字典有关。我已经在Kaggle上浏览并运行了示例代码(上面发布的第一个链接),它运行得非常完美——使用了一个字典。我研究了其他几个例子,他们似乎都在使用字典在这一点上。所以我不知道为什么我的代码会给我这个错误

我在3.4.4版本上运行这个 提前感谢您的建议/帮助

谢谢你, 托尼


Tags: run代码inpy图像datatensorflow错误