Kiểu mạng nơ-ron Kiểu mạngError: Đối số tìm nạp có loại không hợp lệ


11

Tôi đang tạo một mạng thần kinh đơn giản bằng cách sử dụng tenorflow, với dữ liệu tôi tự thu thập, tuy nhiên, nó không hợp tác: PI đã gặp phải một lỗi mà tôi không thể sửa chữa hoặc tìm cách khắc phục và tôi rất thích sự giúp đỡ của bạn.

Sự sai sót:

TypeError: Tìm nạp đối số 2861.6152 của 2861.6152 có loại không hợp lệ, phải là một chuỗi hoặc Tenor. (Không thể chuyển đổi float32 thành Tenor hoặc Hoạt động.)

Lỗi liên quan đến dòng sau trong mã của tôi:

_, cost = tf_session.run([optimizer, cost], feed_dict = {champion_data: batch_input, item_data: batch_output})

Tôi đã nhận ra rằng lỗi không xảy ra khi tôi nhận xét các dòng sau trong mã của mình:

prediction = neural_network_model(champion_data)
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(prediction, item_data))
optimizer = tf.train.AdamOptimizer().minimize(cost)
_, cost = tf_session.run([optimizer, cost], feed_dict = {champion_data: batch_input, item_data: batch_output})

Vì vậy, một nơi nào đó trong số những dòng này đang nhận được một cái gì đó trông không giống như nó mong đợi. Tôi đã thử tính năng rõ ràng (loại bỏ np.array () khỏi batch_input và batchDefput hoặc thay thế nó bằng list ()) nhưng điều đó không giải quyết được vấn đề. Giả thuyết hiện tại của tôi là đầu ra của neural_network_model (champ_data) bằng cách nào đó có hình dạng hoặc loại sai, tuy nhiên tôi không chắc chắn làm thế nào để kiểm tra điều đó hoặc làm thế nào để giải quyết nó nếu đó là trường hợp.

Mã đầy đủ có thể được tìm thấy ở đây: https://gist.github.com/HasseIona/4bcaf9f95ae828e056d5210a2ea07f88

Chỉnh sửa: Tôi đã xác minh rằng dữ liệu vô địch được nhập vào neural_network_model, dự đoán và chi phí đều là các thang đo. Tôi đã cố gắng giải quyết vấn đề bằng giả thuyết rằng vấn đề nào đó nằm ở phần feed_dict = {} của mã, nhưng không đi đến đâu

Câu trả lời:


17

Vấn đề nằm ở việc sử dụng tên 'chi phí' trong hai lần, vấn đề đã được giải quyết bằng cách thay đổi điều này:

_, cost = tf_session.run([optimizer, cost], feed_dict = {champion_data: batch_input, item_data: batch_output})

đến đây:

_, c = tf_session.run([optimizer, cost], feed_dict = {champion_data: batch_input, item_data: batch_output})

Bằng cách này, tên của biến 'c' sẽ không xung đột nữa với phần [trình tối ưu hóa, chi phí] của mã.


câu trả lời hữu ích đáng kinh ngạc
lenhhoxung
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.