TensorSwiftに詳しい人に聞きたいのですが、以下の一番上のコードの部分でエラーにかかってしまいます。
Bundle.main.resourcePath!でnilは返ってこないので
ファイル読み込みはできているとは思うのですが、elementsの方が小さくなってしまうのはファイルの中身があまり正常ではないというこうなんでしょうか?
それぞれのファイルは、こちらとこちらを参考に
TensorFlowでモデル書き出しを行い、できたファイルをプロジェクトにコピペしました。
swift
1 public init(shape: Shape, elements: [Element]) { 2 let volume = shape.volume() 3 precondition(elements.count >= volume, "`elements.count` must be greater than or equal to `shape.volume`: elements.count = \(elements.count), shape.volume = \(shape.volume())") 4 self.shape = shape 5 self.elements = (elements.count == volume) ? elements : Array(elements[0..<volume]) 6 }
swift
1 path=Bundle.main.resourcePath! 2 W_conv1 = Tensor(shape: [5, 5, 1, 32], elements: loadFloatArray(path, file: "W_conv1")) 3 b_conv1 = Tensor(shape: [32], elements: loadFloatArray(path, file: "b_conv1")) 4 W_conv2 = Tensor(shape: [5, 5, 32, 64], elements: loadFloatArray(path, file: "W_conv2")) 5 b_conv2 = Tensor(shape: [64], elements: loadFloatArray(path, file: "b_conv2")) 6 W_fc1 = Tensor(shape: [Dimension(7 * 7 * 64), 1024], elements: loadFloatArray(path, file: "W_fc1")) 7 b_fc1 = Tensor(shape: [1024], elements: loadFloatArray(path, file: "b_fc1")) 8 W_fc2 = Tensor(shape: [1024, 10], elements: loadFloatArray(path, file: "W_fc2")) 9 b_fc2 = Tensor(shape: [10], elements: loadFloatArray(path, file: "b_fc2")) 10 11private func loadFloatArray(_ directory: String, file: String) -> [Float] { 12 let data = try! Data(contentsOf: URL(fileURLWithPath: directory.stringByAppendingPathComponent(file))) 13 return Array(UnsafeBufferPointer(start: UnsafeMutablePointer<Float>(mutating: (data as NSData).bytes.bindMemory(to: Float.self, capacity: data.count)), count: data.count / 4)) 14}
swift
1import Foundation 2 3extension String { 4 public func stringByAppendingPathComponent(_ str: String) -> String { 5 return (self as NSString).appendingPathComponent(str) 6 } 7}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。